""" 算法竞赛入门经典(第2版) 习题2-6 排列(permutation) 用1,2,3...9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要求 abc:def:ghi = 1:2:3,按照"abc def ghi"的格式输出所有解,每行一个解。 """ for i in range(123,982): if len(set(str(i)))<3:continue j = i * 2 k = i * 3 if k>999:break if len(set(str(i) + str(j) + str(k))) == 9: print(i,j,k)
以下是C++代码
#include#include #include using namespace std; int main() { int i,j,k=0; set jihe; //新建集合 for(i=123;i<982 && k<999 ;i++) { jihe.clear(); jihe.insert(i%10); jihe.insert(i/10%10); jihe.insert(i/100); if (jihe.count(0)==1) continue; //发现有0则下一个 j = i* 2; jihe.insert(j%10); jihe.insert(j/10%10); jihe.insert(j/100); if (jihe.count(0)==1) continue; //发现有0则下一个 k = i * 3; jihe.insert(k%10); jihe.insert(k/10%10); jihe.insert(k/100); if (jihe.count(0)==1) continue; //发现有0则下一个 if (jihe.size()==9) printf("%d %d %d \n",i,j,k); } }