(百例编程)70.魔术师猜纸牌(2)

题目:魔术师再次表演,他将红桃和黑桃全部迭在一起,牌面朝下放在手中,对观众说:最上面一张是黑桃A,翻开后放在桌上。以后,从上至下每数两张全依次放在最底下,第三张给观众看,便是黑桃2,放在桌上后再数两张依次放在最底下,第三张给观众看,是黑桃3。如此下去,观众看到放在桌子上牌的顺序是:黑桃 A 2 3 4 5 6 7 8 9 10 J Q K红桃 A 2 3 4 5 6 7 8 9 10 J Q K问魔术师手中牌的原始顺序是什么?
//题目:魔术师再次表演,他将红桃和黑桃全部迭在一起,牌面朝下放在手中,对观众说:
/*最上面一张是黑桃A,翻开后放在桌上。以后,从上至下每数两张全依次放在最底下,第
三张给观众看,便是黑桃2,放在桌上后再数两张依次放在最底下,第三张给观众看,是
黑桃3。如此下去,观众看到放在桌子上牌的顺序是:
黑桃 A 2 3 4 5 6 7 8 9 10 J Q K
红桃 A 2 3 4 5 6 7 8 9 10 J Q K
问魔术师手中牌的原始顺序是什么?*/

//BY as1138 2011-10-17

#include <iostream>
#include <queue>
using namespace std;

int main(void)
{
	queue<int> iQue;
	int len=0;
	int iRes[26];
	int i =0;
	int tem;
	while(i!=26)
	{
        iQue.push(i++);
	}
	
	for (int j=1;j!=27;++j)
	{
		tem = iQue.front();
		iQue.pop();
        iRes[tem] = j;
      if (j != 26)
      {
		  tem = iQue.front();
		  iQue.pop();
		  iQue.push(tem);

		  tem = iQue.front();
		  iQue.pop();
		  iQue.push(tem);
      }
	}

	for (int k=0;k!=26;++k)
	{
		if(iRes[k]>13)
			cout<<"红:"<<iRes[k]-13<<" ";
		else
			cout<<"黑:"<<iRes[k]<<" ";
	}
	cout<<endl;
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值