题目描述
经过九九八十一难,唐僧和他徒弟们终于到了西天。幽静的雷音寺中包含了 n 个房间,每个房间中 k 本经书,每本经书都有一定的价值。由于时间限制,每个房间只够拿一本经书,很显然,肯定拿那本价值最大的经书。
输入描述
输入数据的第一行是房间数 n。接下来的 n 行每行描述了房间的经书情况:第一个数是经书的本数 k,然后是 k 个整数,表示每一本经书的价值。
输出描述
占一行,唐僧他们总共能拿到经书的最大价值(在 long 范围以内)。
样例输入
4
3 2 2 5
5 3 3 4 4 1
2 30 23
5 10 20 30 20 30
样例输出
69
思路
我一开始看到有行有列的,以为要用数组来实现,搞了半天连输入都办不到。
后来百度了一下,发现自己想的太复杂了,其实这题完全不需要数组
只需要for和while循环就行了
代码实现
#include<stdio.h>
int main()
{
int n;//房间数
while(scanf("%d",&n)!=EOF)
{
int k;//经书的数量
int sum=0,x;
//int temp=0;
for(int i=0;i<n;i++)
{
scanf("%d",&k);
int temp=0;
while(k--)
{
scanf("%d",&x);
temp=temp>x?temp:x;
}
sum+=temp;
}
printf("%d\n",sum);
}
return 0;
}
对了,这个代码上面不是有一行被我//掉了吗,就是下面这个
//int temp=0;
我一开始把temp放在for循环外面的时候,按照输入样例输入后,输出结果是70,比正确结果多了1,我就想,这到底是咋回事啊?如果有人知道的话麻烦帮帮忙,解答一下吧?之前也有过这种情况,百思不得其解。。。。
以上。