zoukankan      html  css  js  c++  java
  • UVA

    Stack 'em Up

    题目大意
    根据所给的数据 在第j位置的书i代表洗牌前的第i张牌在洗牌后位于第j张。
    接下来是有若干行,每一行都有一个数k代表使用了第k种洗牌法。
    解题思路
    利用数值和花色的特点,将每一张牌对应一个0到51的数字,将数字“洗牌”后再输出对应的每一张牌。“洗牌”的方法是利用数组存放该位置上的牌。例如add[i]=j,代表第i位置上放着对应数字是j的牌。

    #include<stdio.h>
    int main()
    {
    	int n,i,a,m,t,s,way[100][55],add0[55],add[55],c,d;
    	char value[13][7]={"2","3","4","5","6","7","8","9","10","Jack","Queen","King","Ace"};
    	char suit[4][10]={"Clubs","Diamonds","Hearts","Spades"};
    	scanf("%d",&n);
    	while(n--)
    	{
    		getchar();
    		for(i=0;i<52;i++)
    			add0[i]=i;
    		scanf("%d",&t);
    		s=0;
    		m=t;
    		while(t--)
    		{
    			for(i=0;i<52;i++)
    			{
    				scanf("%d",&d);
    			    way[s][i]=d-1;
    			}
    			s++;
    		}
    		while(m--)
    		{
    			scanf("%d",&a);
    			for(i=0;i<52;i++)
    				add[i]=add0[way[a-1][i]];
    			for(i=0;i<52;i++)
    				add0[i]=add[i];
    		}
    		for(i=0;i<52;i++)
    		{
    			/*printf("%d
    ",add0[i]);*/
    		    d=add0[i]/13;
    			c=add0[i]%13;
    			printf("%s of %s
    ",value[c],suit[d]);
    		}
    		if(n)
    			printf("
    ");
    	}
    	return 0;
    }
    
  • 相关阅读:
    近期Android学习II
    近期Android学习
    Java中AQS基本实现原理
    Java中CAS 基本实现原理
    SpringBoot 消息国际化配置
    SpringBoot2.0 配置多数据源
    浅谈Java 线程池原理及使用方式
    Java并发编程之闭锁与栅栏
    Java 8 Stream API实例
    第二阶段考试
  • 原文地址:https://www.cnblogs.com/cnsec/p/11830696.html
Copyright © 2011-2022 走看看