1 条题解

  • 0
    @ 2025-8-24 22:21:37

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Sarcasm
    压行一时爽,调试火葬场

    搬运于2025-08-24 22:21:37,当前版本为作者最后更新于2020-05-05 09:25:56,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    题目传送门


    废话不多说,直接上思路

    暴力模拟

    1. 先读入一个字符串
    2. 将牌储存到一个结构体中(用于判断重复)
    3. 将同一花色的牌的个数统计出来
    4. 用同一花色的总牌数减去这个花色的牌数
    5. 判断是否重复
    6. 输出

    c++的代码如下:

    #include<bits/stdc++.h>
    using namespace std;
    string a;
    int p=13,k=13,h=13,t=13,sum;//由于一副扑克牌有54张,去掉大小王还有52张,因为有4个花色,则每个花色有13张 
    struct node{
    	char hua;//储存花色 
    	int num;//储存点数 
    }c[10010];
    int main(){
    	cin>>a;//读入字符串 
    	for(int i=0;i<a.length();i+=3){//由于每三个字符为一张,所以i=i+3 
    		if(a[i]=='P') p--;
    			else if(a[i]=='K') k--;
    			else if(a[i]=='H') h--;
    			else t--;
    		c[++sum].hua=a[i];//储存花色 
    		c[sum].num=(a[i+1]-'0')*10+(a[i+2]-'0');//储存点数 
    	}
    	for(int i=1;i<sum;i++)
    		for(int j=i+1;j<=sum;j++)
    			if(c[i].hua==c[j].hua&&c[i].num==c[j].num){
    				printf("GRESKA");
    				return 0;
    				//有牌相同,输出,直接结束程序 
    			}
    	//这里判断有牌相同的情况		
    	printf("%d %d %d %d",p,k,h,t);//输出 
    	return 0;
    }
    
    • 1

    信息

    ID
    5561
    时间
    1000ms
    内存
    32MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者