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码表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#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;
        }
             
    }
   
}

发表评论

电子邮件地址不会被公开。