演算法 取火柴

2022-06-16 06:36:11 字數 1068 閱讀 3999

真的太笨了。

我!這個道理和程式設計無關,每人最多取4根,

1+4=5

21=5*4+1

也就是說,只要保證每輪兩方之和是5,那麼4輪後取走20根,最後先取的人必定取最後一根。

第二題:需要用遞推的方式,計算所有必勝必輸的狀態,然後保證每次取火柴都讓對方到達必輸狀態。

所謂必輸就是只剩最後一根,或者無論怎麼取後的結果都是必勝。

大致的思路是:你拿n根(1

<=n<=4)火柴,電腦就拿5-n根火柴,只要保證每回合內,你拿的火柴根數+電腦拿的火柴根數=5

,四個回合後,一共拿走20根火柴,肯定還剩1根,那必須是你自己拿,於是電腦就贏了!

#include

void

main()

printf(

"你想要拿幾根火柴(1~4)?");

scanf("%d

",&n);

while(1

)

printf(

"只能取1~4根火柴哦!\n請重新輸入:");

scanf("%d

",&n);

}s=s-n;

if(s==0

)

printf(

"還剩%d根火柴\n

",s);

printf(

"電腦拿了%d根火柴\n

",5-n);

s=s-(5-n);

printf(

"還剩%d根火柴\n

",s);

}while

(s);

printf(

"電腦獲勝!\n");

}

#include #include 

void

fun()

while(count <= 0 || count > 4

); hcs = hcs -count;

}else

//電腦操作

czs++;

}}void

main()

取火柴遊戲

玩完幾把遊戲後。突然想起了乙個比較老的遊戲 取火柴遊戲!遊戲規則簡單 不需要撿裝備,也沒有危險的空投。emm言歸正傳!有n根火柴,每人每次最多取4根火柴,最少取一根火柴。如果某人取到最後一根火柴,那麼恭喜你,輸了!emmm上 void quhuochai last last user if last...

取火柴遊戲

include include include using namespace std float num1 0 float num2 0 struct treenode class tree float chance treenode ptr void run tree tree1 protect...

取火柴遊戲 Nim博弈

好久之前看的sg函式了 好像就記住乙個nim博弈qwq 第一次啊看的時候很迷,現在感覺可以了qwq 首先我們來看乙個其他的遊戲。以下遊戲只有兩個人參與,且足夠聰明 兩個人在一張圓形的桌子上放等大的盤子,最後乙個無法放盤子的人輸掉比賽 很顯然,先手必勝。為什麼?第乙個人可以將盤子放在桌子的中心。然後只...