算法競賽入門經典-課後練習-2-10-排列


代碼:

#include <iostream>
#include <cmath>
#include <ctime>
#include <cstdio>
#include <fstream>
using namespace std;

ifstream fin("f:\\input.txt");
ofstream fout("f:\\output.txt");
int main()
{

	//freopen("f:\\input.txt", "r", stdin);
	//freopen("f:\\output1.txt", "w", stdout);
	int abc, def, ghi;
	for(abc = 123; abc <= 987; ++abc)
	{
		for(def = 123; def <= 987 ; ++def)
		{
			for(ghi = 123; ghi <= 987 ; ++ghi)
			{
				if(ghi == abc * 3 && def == abc * 2)
				{
					int tag[10] = {0};
					if(tag[abc / 100] == 1) break;
					else tag[abc / 100] = 1;
					if(tag[abc % 100 / 10] == 1) break;
					else tag[abc % 100 / 10] = 1;
					if(tag[abc % 10] == 1) break;
					else tag[abc % 10] = 1;

					if(tag[def / 100] == 1) break;
					else tag[def / 100] = 1;
					if(tag[def % 100 / 10] == 1) break;
					else tag[def % 100 / 10] = 1;
					if(tag[def % 10] == 1) break;
					else tag[def % 10] = 1;


					if(tag[ghi / 100] == 1) break;
					else tag[ghi / 100] = 1;
					if(tag[ghi % 100 / 10] == 1) break;
					else tag[ghi % 100 / 10] = 1;
					if(tag[ghi % 10] == 1) break;
					else tag[ghi % 10] = 1;
					if(tag[0] == 1) break;// 排除0
					printf("%d\n", abc * 1000000 + def * 1000 + ghi);
				}

			}
		}
	}
	cout <<"Time = " << (double)clock() / CLOCKS_PER_SEC << "s" << endl;
	return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章