-
-
hblac.cpp
-
发表于: 2010-10-20 15:59 4084
-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | #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; } |
赞赏
赞赏
雪币:
留言: