【回溯法】竞赛游戏
題目描述
某游戲規(guī)則中,甲乙雙方戰(zhàn)斗,每一回合總能分出勝負(fù),游戲規(guī)定:
1.失敗的一方要將自己體力值的1/4加給勝利的一方。
2.游戲開始時(shí),甲的體力值是1000,乙的體力值是2000。
3.每一回合,甲乙勝利的概率均為50%。
求解4個回合后,雙方體力值之差小于1000的概率。
分析
每一回合結(jié)束,要么甲贏,要么乙贏。n個回合,那么有2^n種結(jié)果,采用回溯法從解空間中,中找出abs(a-b)<1000的結(jié)果即可。
代碼
#include<stdio.h> #include<stdlib.h> #define MAX 1000 int i=1,count=0; float m=1000,a=1000,n=1000,b=1000; void backdate(int n); int sum; int main() {scanf("%d",&sum);backdate(1);printf("%d",count);return 0; } void backdate(int i) {float tmp;int j;if(i>sum){if(abs(a-b)<1000)count++;return ;}m=a,n=b; a+=b/4;b-=b/4;backdate(i+1);a=m,b=n;b+=a/4;a-=a/4;backdate(i+1); return; }轉(zhuǎn)載于:https://www.cnblogs.com/zhengkang/p/5729070.html
總結(jié)
- 上一篇: Snmp linux
- 下一篇: FineUI表格模板列Undefined