-
-
hblac.cpp
-
发表于: 2010-10-20 15:59 4011
-
#include <stdio.h> bool use[17]={0}; int grid[5][5]={0}; int count=0; bool suit(int row,int col,int value) { int i; if(row==4) { if(grid[1][col]+grid[2][col]+grid[3][col]+value!=34) return false; if(col==1) if(grid[1][4]+grid[2][3]+grid[3][2]+value!=34) return false; int sum=0; for(i=1;i<col;i++) sum+=grid[row][i]; sum+=value; if(sum>34) return false; } if(col==4) { if(grid[row][1]+grid[row][2]+grid[row][3]+value!=34) return false; if(row==4) if(grid[1][1]+grid[2][2]+grid[3][3]+value!=34) return false; int sum=0; for(i=1;i<row;i++) sum+=grid[i][col]; sum+=value; if(sum>34) return false; } int sum=0; for(i=1;i<row;i++) sum+=grid[i][col]; sum+=value; if(sum>34) return false; sum=0; for(i=1;i<col;i++) sum+=grid[row][i]; sum+=value; if(sum>34) return false; return true; } int search(int row,int col) { int i,j; if(row==4&&col==4) { for(i=1;i<=16;i++) if(!use[i]) break; if(suit(4,4,i)) { count++; grid[4][4]=i; printf("Case %d\n",count); for(i=1;i<=4;i++) for(j=1;j<=4;j++) if(j==4) printf("%d\n",grid[i][j]); else printf("%d ",grid[i][j]); printf("\n"); } return 0; } for(i=1;i<=16;i++) if(!use[i]) { if(suit(row,col,i)) { use[i]=1; grid[row][col]=i; if(col==4) search(row+1,1); else search(row,col+1); use[i]=0; grid[row][col]=0; } } return 0; } int main() { search(1,1); return 0; }
赞赏
看原图
赞赏
雪币:
留言: