无主之地1
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
0
-
描述
-
子晓最近在玩无主之地1,他对这个游戏的评价不错,结合了FPS与RPG元素,可玩度很高。不过,他发现了一代的任务系统做的不好,任务系统并没有帮他统计清楚哪个区域有多少任务,而且,给任务的时候呢,也比较散乱。比如,在1区域的一个任务点,你领到了4个任务;2区域的一个任务点,你领到了3个任务;游戏一段时间后,你又在1区域另一个任务点个领到了3任务(之前任务没有完成),3区域领到了9个任务……他感觉很凌乱,现在他要设计一个程序来统计每个区域有多少个任务。
-
输入
-
多组测试数据,以输入0 0结束
每组数据占一行,输入m区域,n个任务(0<m,n<100)
输出
- 输出各个区域的统计结果(不要求排序) 样例输入
-
1 3 2 3 3 4 1 7 0 0
样例输出
-
1 10 2 3 3 4
来源
- 原创 上传者
问题链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=845
问题分析:
题目写的稍微有点问题,“输出各个区域的统计结果(不要求排序)”这句话应该改为“输出各个区域的统计结果,要求按照输入的顺序进行输出”或“输出各个区域的统计结果(不要排序)”。这样就应该是消除了一定歧义。
代码:
#include <iostream> #include <stdio.h> #include <string.h> #include <math.h> #include <vector> #include <queue> #include <stack> #include <map> #include <string> #include <algorithm> using namespace std; /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int main(int argc, char** argv) { int num1[100]={0}; int size=0; int num2[100]={0}; int a,b; while(scanf("%d%d",&a,&b) && (a!=0 || b!=0)){ if(num2[a] != 0){ //当一件输入过a区域的任务数量后 再次输入a 区域的任务数量 只需要在之前上叠加 num2[a]+=b; continue; } num1[size++]=a; num2[a]+=b; } for(int i=0;i<size;i++){ printf("%d %d\n",num1[i],num2[num1[i]]); } return 0; }
附上一个别的地方找的测试数据:
1 34 21 72 100输出结果 应该是1 104 22 1
-
多组测试数据,以输入0 0结束