蓝桥杯模拟题5 九宫格(暴力求解)
要么暴力, 要么简单dfs搜索
答案(72);
暴力时间长点
#include<stdio.h> int main() { int sum=0; int q,w,e,r,t,y,u,i,o; for(q=1;q<=9;q++) for(w=1;w<=9;w++) for(e=1;e<=9;e++) for(r=1;r<=9;r++) for(t=1;t<=9;t++) for(y=1;y<=9;y++) for(u=1;u<=9;u++) for(i=1;i<=9;i++) for(o=1;o<=9;o++) { if(q!=w&&q!=e&&q!=r&&q!=t&&q!=y&&q!=u&&q!=i&&q!=o) { if(w!=e&&w!=r&&w!=t&&w!=y&&w!=u&&w!=i&&w!=o) { if(e!=r&&e!=t&&e!=y&&e!=u&&e!=i&&e!=o) { if(r!=t&&r!=y&&r!=u&&r!=i&&r!=o) { if(t!=y&&t!=u&&t!=i&&t!=o) { if(y!=u&&y!=i&&y!=o) { if(u!=i&&u!=o&&i!=o) { if(q+w+e==r+t+y&&r+t+y==u+i+o&&q+r+u==w+t+i&&w+t+i==e+y+o) sum++; } } } } } } } } printf("%d\n",sum); }
dfs简单搜索
#include<stdio.h> int sum=0; int vis[10]; int a[9]; void dfs(int x) { if(x==9) { int c1=a[0]+a[1]+a[2]; int c2=a[3]+a[4]+a[5]; int c3=a[6]+a[7]+a[8]; int l1=a[0]+a[3]+a[6]; int l2=a[1]+a[4]+a[7]; int l3=a[2]+a[5]+a[8]; if(c1==c2&&c2==c3&&l1==l2&&l2==l3) { sum++; } } else { for(int i=1;i<=9;i++) { if(!vis[i]) { a[x]=i; vis[i]=1; dfs(x+1); a[x]=0; vis[i]=0; } } } } int main() { dfs(0); printf("%d\n",sum); return 0; }
岂曰无衣?与子同袍。王于兴师,修我戈矛。与子同仇!
岂曰无衣?与子同泽。王于兴师,修我矛戟。与子偕作!
岂曰无衣?与子同裳。王于兴师,修我甲兵。与子偕行!