题目描述
有一种扑克牌,都是以大写字母“A~Z”组成,每张牌有n张。现在这副牌中少了一些,小Y请了几个同学来帮助确认到底少了哪些牌。每个同学将自己清理的牌用字母区间和数量进行表示,比如 A Q 1表示A到Q之间的牌各有1张。T W 2 表示T到W之间的牌各有2张。
现在根据这些同学提供的信息,请你编写一个程序来帮助小Y确认一下缺失哪个字母扑克牌,每种扑克牌缺多少张。
输入
第一行,两个整数,第一个整数n,代表每个字母扑克牌有n张,第二个整数m代表有m个同学提供的区间。
接下来M行 每个三个值,前两个为区间的开始字母(p)和结束字母(q),第三个值为整数r,代表该区间每张扑克牌的张数。
输出
缺失的扑克牌的名称和缺失的张数,中间用空格分开。
每张扑克牌一行。从照字母顺序从小大到输出。
样例输入
3 3 A Z 1 A W 1 A X 1
样例输出
X 1 Y 2 Z 2
提示
每张牌有3张,3组范围。第1组,A-Z是全的,第二组,X,Y,Z各缺1张。第3组Y,Z各缺1张。
因此X缺1张,Y缺2张,Z缺2张。
数据范围:所有数据在int范围内。
这道题目关键要分清数据类型,如果字母用ASCII来编译的话可以是int()形式,也可以直接用char()。
要对ASCII码对应表做到心中有数。
#include<bits/stdc++.h>
using namespace std;
int q[1001];
int b[2002];
int main(){
int aa,s,dd,ff,gg,g;
char d,f,a='A',z='Z',c,x=0,o=0,tt=0;
cin>>g>>s;
for(int i=1;i<=s;i++){
cin>>d>>f>>ff;
for(int j=d;j<=f;j++){
q[j]=q[j]+ff;
}
}
for(int i=a;i<=z;i++){
if(g>q[i])
{
cout<<char(i)<<" "<<g-q[i]<<endl;
}
}
}