三羊獻瑞——第六屆藍橋杯C語言B組(省賽)第三題
阿新 • • 發佈:2018-06-09
lan font oid 漢字 print ack size IV cnblogs
原創
三羊獻瑞
觀察下面的加法算式:
祥 瑞 生 輝
+ 三 羊 獻 瑞
-------------------
三 羊 生 瑞 氣
(如果有對齊問題,可以參看【圖1.jpg】)
其中,相同的漢字代表相同的數字,不同的漢字代表不同的數字。
請你填寫“三羊獻瑞”所代表的4位數字(答案唯一),不要填寫任何多余內容。
分析:三羊生瑞氣這個數中三只能是數碼1,所以其他7個數字不必考慮是1
法一(枚舉):
枚舉祥、瑞、生、輝、羊、獻、氣這7個字,然後判斷是否滿足等式即可。
public class 三羊獻瑞 { public static void main(String args[]) {int tt=0; int arr[]=new int[7]; for(arr[0]=2;arr[0]<=9;arr[0]++) { //祥 for(arr[1]=0;arr[1]<=9;arr[1]++) { //瑞 if(arr[1]==1) { continue; } for(arr[2]=0;arr[2]<=9;arr[2]++) { //生 if(arr[2]==1) { continue; } for(arr[3]=0;arr[3]<=9;arr[3]++) { //輝 if(arr[3]==1) { continue; } for(arr[4]=0;arr[4]<=9;arr[4]++) { //羊 if(arr[4]==1) { continue; } for(arr[5]=0;arr[5]<=9;arr[5]++) { //獻 if(arr[5]==1) { continue; } for(arr[6]=0;arr[6]<=9;arr[6]++) { //氣 if(arr[6]==1) { continue; } int flag[]= {0,0,0,0,0,0,0,0,0,0}; int i=0; int ff=0; for(i=0;i<=6;i++) { //判斷是否包含相同的數碼 if(flag[arr[i]]==1) { ff=1; break; } flag[arr[i]]=1; } if(ff==1) { //有相同數碼 continue; } if((arr[0]*1000+arr[1]*100+arr[2]*10+arr[3])+(1000+arr[4]*100+arr[5]*10+arr[1])==10000+arr[4]*1000+arr[2]*100+arr[1]*10+arr[6]) { System.out.println(1000+arr[4]*100+arr[5]*10+arr[1]); tt=1; } if(tt==1) { break; } } if(tt==1) { break; } } if(tt==1) { break; } } if(tt==1) { break; } } if(tt==1) { break; } } if(tt==1) { break; } } if(tt==1) { break; } } } }
法二(全排列):
全排列思想看我另外一篇博客:https://www.cnblogs.com/chiweiming/p/8727164.html
對0、2、3、4、5、6、7、8、9這8個數碼進行全排列,每產生一種全排列就將全排列前7
位數取出進行運算,滿足條件算式輸出即可。
public class 三羊獻瑞{ static int flag=0; static int arr[]= {0,2,3,4,5,6,7,8,9}; static void Swap(int a,int b) { int temp=0; temp=arr[a]; arr[a]=arr[b]; arr[b]=temp; } static void Quan(int num) { if(num==8) { //產生一種全排列 if((arr[0]*1000+arr[1]*100+arr[2]*10+arr[3])+(1000+arr[4]*100+arr[5]*10+arr[1])==10000+arr[4]*1000+arr[2]*100+arr[1]*10+arr[6]) { System.out.println(1000+arr[4]*100+arr[5]*10+arr[1]); flag=1; } return; } int i=0; for(i=num;i<=8;i++) { Swap(i,num); Quan(num+1); if(flag==1) { return; } Swap(i,num); } } public static void main(String args[]) { Quan(0); } }
答案:1085
22:07:35
2018-06-08
三羊獻瑞——第六屆藍橋杯C語言B組(省賽)第三題