zoukankan      html  css  js  c++  java
  • Week14 作业 A

    题目描述:

    每一个大人曾经都是一个小孩,Q老师 也一样。

    为了回忆童年,Q老师 和 Monika 玩起了石头剪刀布的游戏,游戏一共 n 轮。无所不知的 Q老师 知道每一轮 Monika 的出招,然而作为限制, Q老师 在这 n 轮游戏中必须恰好出 a 次石头,b 次布和 c 次剪刀。

    如果 Q老师 赢了 Monika n/2(上取整) 次,那么 Q老师就赢得了这场游戏,否则 Q老师 就输啦!

    Q老师非常想赢,他想知道能否可以赢得这场游戏,如果可以的话,Q老师希望你能告诉他一种可以赢的出招顺序,任意一种都可以。

    总结:

    这题其实没有什么注意的点,但是有一个关于C++语言的问题,看下方图片

    代码:

    #include <cstdio>
    #include <iostream>
    #include <cmath>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    int cntM[258];	
    int N,A,B,C;
    string M;
    int realA,realB,realC;
    void print()
    {
    	cout<<"YES"<<endl;
    	string s(N,0);
    	A-=realA,B-=realB,C-=realC;
    	//Ìî³ä
    	for(int i=0;i<N;i++)
    	{
    		if( M[i]=='S' && realA>0 ) s[i]='R',--realA;
    		else if( M[i]=='R' && realB>0 ) s[i]='P',--realB;
    		else if( M[i]=='P' && realC>0 ) s[i]='S',--realC;
    	}
    	//Ìî³äÍêÓ®µÄ£¬Ê£ÏµÄËæ±ãÌî³ä
    	for(int i=0;i<N;i++)
    	{
    		if(s[i]==0)
    		{
    			if(A>0) s[i]='R',--A;
    			else if(B>0) s[i]='P',--B;
    			else if(C>0) s[i]='S',--C;
    		}
    	 }
    	cout<<s<<endl;
    }
    int main()
    {
    	int T;
    	cin>>T;
    	while(T--)
    	{
    		memset(cntM,0,sizeof(cntM));
    		cin>>N>>A>>B>>C>>M;	
    		for(auto x:M)
    			cntM[x]++; 
    		realA=min(A,cntM['S']),
    		realB=min(B,cntM['R']),
    		realC=min(C,cntM['P']);
    		int Limit=(int)ceil((double)N/2.0); 
    		int Now=realA+realB+realC;
    		if(Now<Limit) cout<<"NO"<<endl;
    		else print();
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    Server Profiler
    Unit Test with VS.NET
    js解析json字符
    多维数组
    $routeProvider与$stateProvider区别
    post 与get
    gulp配置
    homebrew常用指令
    less.js
    过滤器
  • 原文地址:https://www.cnblogs.com/qingoba/p/13111267.html
Copyright © 2011-2022 走看看