设为首页 加入收藏

TOP

从零单排PAT1015,1016,1017,1018(二)
2015-07-24 06:51:50 来源: 作者: 【 】 浏览:103
Tags:从零单 PAT1015 1016 1017 1018
路之后,才豁然开朗,这其实就是我们平时最最常用的 笔算除法模拟。以字符串的形式存储A,然后访问它的每一个字符,转换为对应数值,作为被除数除以B得到商(可为0)和余数,商存入另一个字符串余数乘以10加上下一位数(下一个字符)作为下一次的被除数。唯一需要注意的是, 数字一开始是不存在0的,所以万一一开始是0,要去除0。
源代码:
#include 
      
       
#include 
       
         using namespace std; int main() { string A,Q; int B,R = 0; cin >> A >> B; int lenth = A.size(); int temp = 0; //用于存储上一位的余数用于存储下一位的 int temp1 = 0; //实际每一次的被除数 for(int i = 0;i
        
          1) { //Q.erase(Q[0],Q.size());//为什么会数组越界 Q.erase(Q.begin()); } cout << Q << " " << R <
         
          




1018 锤子剪刀布 题目要求:

现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。

输入格式:

输入第1行给出正整数N(<=105),即双方交锋的次数。随后N行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C代表“锤子”、J代表“剪刀”、B代表“布”,第1个字母代表甲方,第2个代表乙方,中间有1个空格。

输出格式:

输出第1、2行分别给出甲、乙的胜、平、负次数,数字间以1个空格分隔。第3行给出两个字母,分别代表甲、乙获胜次数最多的手势,中间有1个空格。如果解不唯一,则输出按字母序最小的解。

输入样例:
10
C J
J B
C B
B B
B C
C C
C B
J B
B C
J J
输出样例:
5 3 2
2 3 5
B B
解题思路: 废话了半天题目,就是两个要求:1.根据输入分别求出甲和乙胜,平,输的场次;2.分别求出甲和乙胜场最多出的是什么,如果相同,优先级分别是B,C,J。所以只需要根据条件,写判断语句就可以,可以用if else 也可以用switch,但是不要漏掉条件。设置9个标志位,3个表示甲的胜,平,输场数(乙与之对应);3个表示甲获胜的手势的个数;3个表示乙获胜的手势的个数。我却一直通不过,后来一想才发现, 甲输的手势不是乙胜利的手势,所以重新修改参数。逻辑计较简单,但是不能弄错,最简单也是最搓的办法多设标志位计数。

源代码:
#include 
           
            

using namespace std;
char getY(int a,int b,int c)//a = B,b = C ,C = J
{
	if(a >= b && a >= c)
		return 'B';
	if(b > a && b >= c)
		return 'C';
	if(c > a && c > b)
		return 'J';
}

int main()
{
	long int N;
	int countY = 0,countP = 0,countS = 0;//记录赢平输的个数
	int YC = 0 ,YJ = 0,YB = 0,SC = 0,SJ = 0,SB = 0;
	cin >> N;
	char A,B;
	for(int i = 0;i < N;i++)
	{
		cin >> A >> B;
		if(A == 'C')//出锤子的情况
		{
			if(B == 'C') //平
				countP ++;
			else if(B == 'J')
			{	countY ++; YC ++; }//甲锤子胜场+1
			else
			{	countS ++; SC ++; }//乙布胜场+1
		}
		else if(A == 'J')//出剪刀的情况
		{
			if(B == 'J') //平
				countP ++;
			else if(B == 'B')
			{	countY ++; YJ ++; }//甲剪刀胜场+1
			else
			{	countS ++; SJ ++; }//乙锤子胜场+1
		}
		else //出布的情况
		{
			if(B == 'B')
				countP ++;
			else if(B == 'C')
			{	countY ++; YB ++; }//甲布胜场+1
			else
			{	countS ++; SB ++; }//乙剪刀胜场+1
		}
	}
	cout << countY << " " << countP << " " << countS <
            
             

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇CF(438D) The Child and Sequence.. 下一篇hdu2089(数位dp)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: