编程联系 翻扑克

现在,桌面上有9张正面向上的扑克。每次反动其中任意两张(包括已经翻过的牌)。使他们从一面向上变为另一面向上。这样一直下去。观察能否使所有的牌都反面向上?请用任意一种程序的方式证明你的结论。并在程序运行时告知你的证明思路。

#include <iostream>

using namespace std;

/*
现在,桌面上有9张正面向上的扑克。每次反动其中任意两张(包括已经翻过的牌)。
使他们从一面向上变为另一面向上。 这样一直下去。
观察能否使所有的牌都反面向上?请用任意一种程序的方式证明你的结论。并在程序运行时告知你的证明思路
*/
int main()
{
int heads[9]{1, 1, 1, 1, 1, 1, 1, 1, 1}; //表示刚开始都是正面
int head_sum = 0; //刚开始9张正面向上的和
int tall_sum = 0; //目标反面都向上的和
int sum = 0; //表示不同情况的差值

//思路:1表示正面; 翻动表示乘以一个-1; -1表示反面;
//每翻动任意两个sum的变化情况分别有:-4 ; +4 ;+0 ;
//通过任意组合变化情况,判断能否得到sum


for(int i=0; i<9; i++)
{
head_sum += heads[i];
tall_sum = tall_sum + heads[i] * (-1);
}
sum = head_sum - tall_sum;
if(sum % 4 == 0)
cout<<"有"<<endl;
else
cout<<"无"<<endl;

return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值