都快写吐了,为什么第五个过不了,有大佬帮忙看吗
查看原帖
都快写吐了,为什么第五个过不了,有大佬帮忙看吗
233534
Devjl楼主2022/2/15 00:54

我不知道为什么用搜索写,但看着没问题呀,就是过不了第五个点,为什么呀

#include <iostream>
using namespace std;
int a, b, c;
char d[20];
bool p[15], q[15];
bool falg;

void print() {
	int h1[10], h2[10];
	int f1, f2, f3;
	bool flag = true;
	f1 = ((int)d[1]) * 100 + ((int)d[2]) * 10 + ((int)d[3]);
	f2 = (f1 / a) * b;
	f3 = (f1 / a) * c;
	if (f2 > 999 || f3 > 999)
		flag = false;
	int d1 = f1, d2 = f2, d3 = f3;
	for (int i = 1; i <= 3; i++) {
		q[d1 % 10] = 1;
		q[d2 % 10] = 1;
		q[d3 % 10] = 1;
		d1 /= 10;
		d2 /= 10;
		d3 /= 10;
	}

	for (int i = 1; i <= 9; i++) {
		if (q[i] == 0)
			flag = false;
		q[i] = 0;
	}
	if (flag) {
		if (falg)
			cout << endl;
		cout << f1 << " " << f2 << " " << f3;
		falg = true;
	}
}

void dfs(int k) {
	for (int i = 1; i <= 9; i++) {
		if (!p[i]) {
			p[i] = 1;
			d[k] = i;
			if (k == 3)
				print();
			else
				dfs(k + 1);
			p[i] = 0;
			d[k] = 0;
		}
	}
}

int main() {
	cin >> a >> b >> c;
	dfs(1);
	if (!falg)
		cout << "No!!!";
	return 0;
}
2022/2/15 00:54
加载中...