知乎笔试题

数字键盘输入的数

需要对题目中的数字键盘建模,这里浪费了一点时间,虽然最后做出来了,但是笔试时间已经过了,放到这里给大家参考参考吧,这个题目开始真的无从下手,对数据结构还是不够熟系

#include <iostream>

using namespace std;

int main()
{
	int number;
	int b[10 + 1];
	int i;
	bool n[10][10] = {	{ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0 },	//0
						{ 0, 1, 1, 0, 1, 0, 0, 0, 0, 0 },	//1
						{ 0, 1, 1, 1, 0, 1, 0, 0, 0, 0 },	//2
						{ 0, 0, 1, 1, 0, 0, 1, 0, 0, 0 },	//3
						{ 0, 1, 0, 0, 1, 1, 0, 0, 0, 0 },	//4
						{ 0, 0, 1, 0, 1, 1, 1, 0, 1, 0 },	//5
						{ 0, 0, 0, 1, 0, 1, 1, 0, 0, 1 },
						{ 0, 0, 0, 0, 1, 0, 0, 1, 1, 0 },
						{ 1, 0, 0, 0, 0, 1, 0, 1, 1, 1 },
						{ 0, 0, 0, 0, 0, 0, 1, 0, 1, 1 },
	};
	cin >> number;

	for (i = 0; number > 0; i++) {
		b[i] = number % 10;
		number /= 10;
	}
	for (i -= 1; i > 0; i--) {
a:		if (n[b[i]][b[i - 1]]) {
			cout << b[i];
			
		}
		else {
			b[i-1]++;
			goto a;
		}
	}
	cout << b[i] << endl;

	return 0;
}
Written on April 17, 2018