第三章 枚举(炸弹人、火柴棍等式、全排列)
目描述(ID:12033)
| 标题: | 炸弹人 | ||
| 详情: | 小哼最近爱上了“炸弹人”游戏。你还记得在小霸王游戏机上的炸弹人吗?用放置炸弹的方法来消灭敌人。需将画面上的敌人全部消灭后,并找到隐藏在墙里的暗门才能过关。
现在有一个特殊的关卡如下。你只有一枚炸弹,但是这枚炸弹威力超强(杀伤距离超长,可以消灭杀伤范围内所有的敌人)。请问在哪里放置炸弹才可以消灭最多的敌人呢。 ![]() 我们先将这个地图模型化。墙用 # 表示。这里有两种墙,一种是可以被炸掉的,另外一种是不能被炸掉的。但是由于现在只有一枚炸弹,所以都用 # 表示,炸弹是不能穿墙的。敌人用 G 表示,空地用 . 表示,当然炸弹只能放在空地上。 |
||
| 输入格式: |
第一行4个整数为n m 表示迷宫的行和列,接下来的n行m列为地图。 1<=n,m<=50 |
||
| 输出格式: |
输出做最多可以消灭的敌人数 |
||
| 样例: |
|
1 #include <stdio.h> 2 int main() 3 { 4 int n, m, max, maxi, maxj, i, j,k, total; 5 char a[20][20]; 6 scanf("%d%d",&n,&m); 7 getchar(); 8 for (i = 0;i < n;i++) 9 gets(a[i]); 10 max = 0; 11 for (i = 0;i < n;i++) 12 { 13 for (j = 0;j < m;j++) 14 { 15 if (a[i][j] == '.') 16 { 17 total = 0; 18 k = i - 1; 19 while (k >= 0 && a[k][j] != '#') 20 { 21 if (a[k][j] == 'G') 22 total++; 23 k--; 24 } 25 k = i + 1; 26 while (k < n && a[k][j] != '#') 27 { 28 if (a[k][j] == 'G') 29 total++; 30 k++; 31 } 32 k = j + 1; 33 while (k < m && a[i][k] != '#') 34 { 35 if (a[i][k] == 'G') 36 total++; 37 k++; 38 } 39 k = j - 1; 40 while (k >=0 && a[i][k] != '#') 41 { 42 if (a[i][k] == 'G') 43 total++; 44 k--; 45 } 46 } 47 if (total > max) 48 { 49 maxi = i; 50 maxj = j; 51 max = total; 52 } 53 } 54 } 55 printf("max= %d,maxi= %d,maxj= %d\n",max,maxi,maxj); 56 return 0; 57 }
火柴棍等式
给你n根火柴棍,你可以拼出多少个形如“A+B=C”的等式?等式中的A、B、C是用火柴棍拼出的整数(若该数非零,则最高位不能是0)。用火柴棍拼数字0-9的拼法如图所示:

注意:
1. 加号与等号各自需要两根火柴棍
2. 如果A≠B,则A+B=C与B+A=C视为不同的等式(A、B、C>=0)
3. n根火柴棍必须全部用上
样例:
输入 14 输出 2 等式为0+1=1 和1+0=1
输入 18 输出 9 等式为0+4=4 0+11=11 1+10=11 2+2=4 2+7=9 4+0=4 7+2=9 10+1=11 11+0=11
1 #include <stdio.h> 2 int fun(int n) 3 { 4 int total = 0; 5 int f[10] = {6,2,5,5,4,5,6,3,7,6}; 6 if (n == 0) 7 total = f[0]; 8 while (n) 9 { 10 total += f[n % 10]; 11 n /= 10; 12 } 13 return total; 14 } 15 int main() 16 { 17 int a, b, c, m, sum=0; 18 scanf("%d",&m); 19 for (a = 0;a <= 11111;a++) 20 { 21 for (b = 0;b < 11111;b++) 22 { 23 c = a + b; 24 if (fun(a) + fun(c) + fun(b) == m-4) 25 { 26 printf("%d+%d=%d\n",a,b,c); 27 sum++; 28 } 29 } 30 } 31 printf("sum=%d\n",sum); 32 return 0; 33 }


浙公网安备 33010602011771号