本文最后更新于:2024年8月27日 上午
编写一个由1-9组成的9位数,并且数字不重复,前N项能被N整除。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| #include <iostream> using namespace std;
int number = 0; int visited[10] = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0};
void makenumber(int n) { if (n < 1) { cout << "ERROR!" << endl; return; } if (n == 10) { cout << number << endl; } for (int j = 1; j <= 9; ++j) { if (!visited[j]) { int temp = number; temp = temp * 10 + j; if (temp % n == 0) { number = temp; visited[j] = 1; makenumber(n + 1); number = number / 10; visited[j] = 0; } } } }
int main() { makenumber(1); return 0; }
|
本题主要是采用了递归回溯法,读者需自行分析。我没有进行数学分析,只是盲目的暴力枚举。