首页 > 代码库 > HNU 12906 Battleship
HNU 12906 Battleship
题目链接: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 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。