编程联系 翻扑克

xiaoxiao2021-03-01  56

现在,桌面上有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; }

 

转载请注明原文地址: https://www.6miu.com/read-4485340.html

最新回复(0)