算法竞赛入门经典(第2版)习题2-6排列(permutation)练习题解_Python与C++代码

0 Comments

"""
算法竞赛入门经典(第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);
   }
	   	
}

发表评论