您的位置:首页 > 其它

{UVA} UVA-414 解题报告

2010-05-18 12:01 260 查看
题目没有难度,逻辑上十分清晰,唯一纠结点的可能就是题目比较长..

这个题目需要注意的一点就是用scanf输入一个整数后回车,再用fgets去读时,会直接读到换行,也就是直接结束掉了.

因此需要在scanf后面用getchar()或者是fgetc(stdin)处理一下.

(同样,注意把数组适当加大,防止越界)

PS.我在这个题上卡了2个多小时,一直WA. 结果发现我一直用的max来记最多的空格数.但是题目的意思我又十分清楚.

所以还是对待错误没有清醒的头脑去解决.

Tip: 当发现答案不正确,而又将一些输入输出及边界考虑好的时候,应当抛弃原来对题目的思维,用对待新问题的眼光再一次 去验证程序的逻辑.

代码如下:

#include<stdio.h>
#include<string.h>
char buf[13+2][25+5];
int n[13+2];
int main()
{
int d,i,j,min,x;
while(1)
{
scanf("%d",&d);
if(d == 0)
break;
fgetc(stdin);
min = 25;
x = 0;
memset(n,0,sizeof(n));
for(i = 0; i < d; i++)
{
fgets(buf[i],30,stdin);
for(j = 0; j < 25; j++)
{
if(buf[i][j] == ' ')
n[i]++;
}
if(n[i] < min)
min = n[i];
}
for(i = 0; i < d; i++)
{
x = x +  n[i] - min;
}
printf("%d/n",x);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: