当Left与Right相遇后,必定是每一行的Left和Right之和最大的先相遇。
求每一行的“X”的总数,max为最大的总和。然后每一行的X数与max相差求和。
#include<cstdio>
#include<cstdlib>
#include<cstring>
int main(void)
{
char map[13][25];
int a[13];
int n;
while( scanf("%d",&n) != EOF)
{
if(n == 0) break;
int sum = 0;
memset(a,0,sizeof(a));
int max = 0;
for(int i = 0;i < n; i++)
{
int count = 0;
for( int j = 0;j < 25; j++)
{
scanf("%c",&map[i][j]);
if(map[i][j] == 'X')
count++;
}
getchar();
a[i] = count;
if(max < count) max = count;
}
for(int i = 0;i < n; i++)
sum += (max - a[i]);
printf("%d/n",sum);
}
return 0;
}
本文介绍了一种算法,该算法通过计算二维数组中每行的X字符数量,并找出这些数量中的最大值,进而计算出从左到右经过的最大路径和。具体实现包括读取输入数据、处理二维数组、计算每行的X数量并进行比较等步骤。
289

被折叠的 条评论
为什么被折叠?



