标签:style blog http color os io for ar
题目链接:http://acm.hnu.cn/online/?action=problem&type=show&id=12906
解题报告:题目意思看了很久都没懂,就是一个10*10的方格,然后上面要放一些船,船的规格分别是1艘占4个格子的船,2艘占3个格子的,3艘占2 个格子的,4艘占一个格子的。然后输入是一个10*10的矩阵,数字都是1-100的数,数字表示将在哪个时刻会打到这个位置,当一艘船的每一个格子都被打中之后,这艘船就会下沉,要求两艘船之间不能相邻,然后让你求最复杂的船的排列方法,就是在这里,到底什么是最复杂的排列方法,真吭,原来就是要让你求这个矩阵上面要在最后才没有船的排列方法,这不就是只要在100那个位置一定要放船不就行了。
1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<algorithm> 5 using namespace std; 6 7 int map[11][11]; 8 char ans[11][11],temp[11][11]; 9 10 int main() 11 { 12 // freopen("in.txt","r",stdin); 13 for(int i = 1;i <= 10;++i) 14 for(int j = 1;j <= 10;++j) 15 { 16 scanf("%d",&map[i][j]); 17 ans[i][j] = temp[i][j] = ‘.‘; 18 } 19 ans[1][1] = ans[1][3] = ans[1][5] = ‘#‘; 20 ans[2][1] = ans[2][2] = ‘#‘; 21 ans[2][4] = ans[2][5] = ‘#‘; 22 ans[2][7] = ans[2][8] = ‘#‘; 23 ans[3][1] = ans[3][2] = ans[3][3] = ‘#‘; 24 ans[3][5] = ans[3][6] = ans[3][7] = ‘#‘; 25 ans[4][1] = ans[4][2] = ans[4][3] = ans[4][4] = ‘#‘; 26 int x,y; 27 for(int i = 1;i <= 10;++i) 28 for(int j = 1;j <= 10;++j) 29 if(map[i][j] == 100) 30 { 31 x = i,y = j; 32 temp[i][j] = ‘#‘; 33 break; 34 } 35 int f = 1; 36 for(int i = (x&1)? 1:2;i <= 10;i+=2) 37 if(abs(i-x) > 1) 38 { 39 for(int j = 1;j <= 10;++j) 40 temp[i][j] = ans[f][j]; 41 f++; 42 if(f > 4) break; 43 } 44 for(int i = 1;i <= 10;++i) 45 { 46 temp[i][11] = NULL; 47 puts(temp[i]+1); 48 } 49 return 0; 50 }
HNU 12906 Battleship,布布扣,bubuko.com
标签:style blog http color os io for ar
原文地址:http://www.cnblogs.com/xiaxiaosheng/p/3919096.html