题目有提示,可以对三阶幻方的情况枚举,一共就有八种情况,然后和读入的数据进行比较就行。
做题的反思就是:C语言基础忘记太多了,比如遍历含量为9个的数组,上来我还写成了for(int i = 0; i < 9; i++)
算法的学习应该是贯穿大学始终的,作为一个计算机专业的学生,科班出身要求我在计算机素养方面要扎实,算法是程序的灵魂,对算法的学习应该是日积月累的!
#include <iostream>
using namespace std;
void solve(char in[]) {
char res[10][10] = {
"492357816",
"276951438",
"618753294",
"834159672",
"294753618",
"816357492",
"438951276",
"672159834"
};
int count = 0;
int flagi = 0;
for(int i = 0; i < 8; i++) {
int j = 0;
for(j = 0; j < 9; j++) {
if(in[j] != '0' & (res[i][j] != in[j]))
break;
}
if(j == 9) {
count++;
flagi = i;
}
}
if(count == 1) {
for(int i = 0; i < 10; i++) {
cout << res[flagi][i] << " ";
if(i == 2 || i ==5) cout << endl;
}
}
else {
cout << "Too Many";
}
}
int main()
{
char in[10];
int now;
int i;
for(i = 0; i < 9; i++) {
cin >> now;
in[i] = now + '0';
}
solve(in);
return 0;
}