首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

hdu2177 取(二堆)石子游戏-威佐夫博弈,输出第一步最优策略

2012-09-08 
hdu2177取(2堆)石子游戏----威佐夫博弈,输出第一步最优策略取(2堆)石子游戏Time Limit: 3000/1000 MS (Jav

hdu2177 取(2堆)石子游戏----威佐夫博弈,输出第一步最优策略


取(2堆)石子游戏Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 427    Accepted Submission(s): 258


Problem DescriptionInputOutputSample InputSample OutputAuthorSourceRecommend

#include<iostream>#include<cstdlib>#include<stdio.h>#include<math.h>using namespace std;const double q=(1+sqrt(5.0))/2.0;void solve(int a,int b){ if(a>b) swap(a,b); int k=b-a; int c=(int)(k*q); if(a==c) puts("0"); else { puts("1"); if(a==0) puts("0 0"); if(a>=c&&b>=c) printf("%d %d\n",c,c+k); for(int i=1;i<=b;i++) { if(a==(int)(i*q)&&b>=a+i&&i!=k) printf("%d %d\n",a,a+i); if(b==(int)(i*q)+i&&a>=b-i&&i!=k) printf("%d %d\n",b-i,b); else if(a==(int)(i*q)+i&&b>=a&&i!=k) printf("%d %d\n",a-i,a); } }}int main(){ int a,b; while(scanf("%d%d",&a,&b)!=EOF) { if(a==0&&b==0) break; solve(a,b); }}


 

热点排行