算法(一) 枚舉法


 
枚舉法,暴力破解,直接羅列各種情況。
 
例1
題目描述:
古堡算式福爾摩斯到某古堡探險,看到門上寫着一個奇怪的算式:
ABCDE * ? = EDCBA
他對華生說:“ABCDE 應該代表不同的數字,問號也代表某個數字!”
華生:“我猜也是!”
於是,兩人沉默了好久,還是沒有算出合適的結果來。請你利用計算機的優勢,找到破解的答案。
把 ABCDE 所代表的數字寫出來。
 
#include <stdio.h>

#include<string.h> int main() { int a,b,c,d,e,x; for(a=0; a<=9; a++) for(b=0; b<=9; b++) for(c=0; c<=9; c++) for(d=0; d<=9; d++) for(e=0; e<=9; e++) for(x=0; x<=9; x++) if(a!=b&&a!=c&&a!=d&&a!=e&&b!=c&&b!=d&&b!=e&&c!=d&&c!=e&&d!=e) if((a*10000+b*1000+c*100+d*10+e)*x==e*10000+d*1000+c*100+b*10+a) printf("%d%d%d%d%d",a,b,c,d,e); return 0; }

 

例二

三羊生瑞氣

觀察一下加法算式,一個漢字代表一個數字,求三羊獻瑞代表的數字。

       祥 瑞 生 輝
  +   三 羊 獻 瑞
-------------------
   三 羊 生 瑞 氣

#include<stdio.h> 

int main() { int a,b,c,d,f,g,h; int num1,num2,sum; for(a=2;a<=9;a++) for(b=0;b<=9;b++) for(c=0;c<=9;c++) for(d=0;d<=9;d++) for(f=0;f<=9;f++) for(g=0;g<=9;g++) for(h=0;h<=9;h++) if(a!=b && a!=c && a!=d && a!=f && a!=g && a!=h && b!=c && b!=d && b!=f && b!= g &&b!=h && c!=d && c!=f && c!= g && c!=h && d!=f && d!=g &&d!=h && f!=g && f!=h && g!=h && a!=1 && b!=1 && c!=1 && d!=1 && f!=1 && g!=1 && h!=1) { num1=a*1000 + b*100 + c*10 + d; num2=1*1000 + f*100 + g*10 + b; sum=1*10000 + f*1000 + c*100 + b*10 + h; if(sum==(num1 + num2)) { printf("1%d%d%d",f,g,b); } } return 0; } 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM