蓝桥杯模拟题5 九宫格(暴力求解)

来源:互联网 发布:yum和yummy的区别 编辑:程序博客网 时间:2024/06/15 15:40





要么暴力,  要么简单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;} 


0 0