//第七屆藍橋杯軟件類省賽真題-C-B-6_方格填數 /*方格填數如下的10個格子 +--+--+--+ | | | |+--+--+--+--+| | | | |+--+--+--+--+| | | |+--+--+--+(如果顯示有問題,也可以參看【圖1.jpg】)填入0~9的數字。要求:連續的兩個數字不能相鄰。(左右、上下、對角都算相鄰)一共有多少種可能的填數方案?請填寫表示方案數目的整數。注意:你提交的應該是一個整數,不要填寫任何多余的內容或說明性文字。*//*【解題思路】解法:暴力枚舉或深度優先搜索,其中需注意條件不能漏,應細心 答案:11318*/#include<iostream>#include<cmath> using namespace std;double a[10];bool visit[10];int count = 0;void dfs(int step){ if(step == 10) { if(abs(a[0]-a[4]) != 1.0 && abs(a[0]-a[1]) != 1.0 && abs(a[0]-a[3]) != 1.0 && abs(a[0]-a[5]) != 1.0 && abs(a[1]-a[5]) != 1.0 && abs(a[1]-a[2]) != 1.0 && abs(a[1]-a[4]) != 1.0 && abs(a[1]-a[6]) != 1.0 && abs(a[2]-a[6]) != 1.0 && abs(a[2]-a[5]) != 1.0 && abs(a[3]-a[7]) != 1.0 && abs(a[3]-a[4]) != 1.0 && abs(a[3]-a[8]) != 1.0 && abs(a[4]-a[8]) != 1.0 && abs(a[4]-a[9]) != 1.0 && abs(a[4]-a[7]) != 1.0 && abs(a[5]-a[9]) != 1.0 && abs(a[5]-a[6]) != 1.0 && abs(a[5]-a[8]) != 1.0 && abs(a[6]-a[9]) != 1.0){ count++;// cout<<" "<<a<<" "<<b<<" "<<c<<endl;// cout<<d<<" "<<e<<" "<<f<<" "<<g<<endl;// cout<<h<<" "<<i<<" "<<j<<endl;// cout<<"============"<<endl; } return; } for(int i = 0;i < 10;i ++) { if(visit[i] == false) { a[step] = i+1; visit[i] = true; dfs(step+1); visit[i] = false; } } return;}int main(){ dfs(0); cout<<"這個算式共有的解法種數為:"<<count<<endl; return 0;}/*#include<iostream>#include<cmath>using namespace std;int main(){ int a,b,c,d,e,f,g,h,i,j; int count = 0; 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(f = 0;f <= 9;f++) for(g = 0;g <= 9;g++) for(h = 0;h <= 9;h++) for(i = 0;i <= 9;i++) for(j = 0;j <= 9;j++){ if(a != b && a != c && a != d && a != e && a != f && a != g && a != h && a != i && a != j && b != c && b != d && b != e && b != f && b != g && b != h && b != i && b != j && c != d && c != e && c != f && c != g && c != h && c != i && c != j && d != e && d != f && d != g && d != h && d != i && d != j && e != f && e != g && e != h && e != i && e != j && f != g && f != h && f != i && f != j && g != h && g != i && g != j && h != i && h != j && i != j){ if(abs(a-e) != 1.0 && abs(a-b) != 1.0 && abs(a-d) != 1.0 && abs(a-f) != 1.0 && abs(b-f) != 1.0 && abs(b-c) != 1.0 && abs(b-e) != 1.0 && abs(b-g) != 1.0 && abs(c-g) != 1.0 && abs(c-f) != 1.0 && abs(d-h) != 1.0 && abs(d-e) != 1.0 && abs(d-i) != 1.0 && abs(e-i) != 1.0 && abs(e-j) != 1.0 && abs(e-h) != 1.0 && abs(f-j) != 1.0 && abs(f-g) != 1.0 && abs(f-i) != 1.0 && abs(g-j) != 1.0){ count++;// cout<<" "<<a<<" "<<b<<" "<<c<<endl;// cout<<d<<" "<<e<<" "<<f<<" "<<g<<endl;// cout<<h<<" "<<i<<" "<<j<<endl;// cout<<"============"<<endl; } } } cout<<"方案數目的總數為:"<<count<<endl; return 0;}*/
新聞熱點
疑難解答