C++题目: 缺失的扑克牌

题目描述

有一种扑克牌,都是以大写字母“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码对应表做到心中有数。

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;
		}
			 
	}
	
}

发表评论