求助,题目P6387
  • 板块灌水区
  • 楼主_X_M_
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/3/29 15:50
  • 上次更新2024/3/29 19:01:42
查看原帖
求助,题目P6387
988099
_X_M_楼主2024/3/29 15:50

代码如下

#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分)。
所以,我错在哪里?

2024/3/29 15:50
加载中...