代码如下
#include <bits/stdc++.h>
using namespace std;
int x[100], n, a[100], cntx[10], cnta[10];
void dfs(int step)
{
if (step > n)
{
bool f = 0;
for (int s = 1; s <= n; s++)
{
if (a[s] < x[s]) return;
if (a[s] > x[s])
{
f = 1;
break;
}
}
if (!f) return;
for (int i = 0; i <= 9; i++)
{
if (cntx[i] != cnta[i]) return;
}
for (int s = 1; s <= n; s++)
{
cout << a[s];
}
cout << endl;
exit(0);
}
for (int num = 0; num <= 9; num++)
{
a[step] = num;
cnta[num]++;
dfs(step + 1);
cnta[num]--;
}
}
int main()
{
while (true)
{
char c = cin.get();
if (c == '\n') break;
x[++n] = c - '0';
cntx[c - '0']++;
}
dfs(1);
cout << 0 << endl;
return 0;
}
我分别在xiaohoucode和洛谷的IDE上都测试过,一个是完全正确,一个是RE,也在2个平台上都评测过(都是20分)。
所以,我错在哪里?