博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2013 蓝桥杯 C++ B决赛 高僧斗法(尼姆博弈)
阅读量:4216 次
发布时间:2019-05-26

本文共 1301 字,大约阅读时间需要 4 分钟。

  历届试题 高僧斗法  
时间限制:1.0s   内存限制:256.0MB
   
问题描述
  古时丧葬活动中经常请高僧做法事。仪式结束后,有时会有“高僧斗法”的趣味节目,以舒缓压抑的气氛。

  节目大略步骤为:先用粮食(一般是稻米)在地上“画”出若干级台阶(表示N级浮屠)。又有若干小和尚随机地“站”在某个台阶上。最高一级台阶必须站人,其它任意。(如图1所示)

  两位参加游戏的法师分别指挥某个小和尚向上走任意多级的台阶,但会被站在高级台阶上的小和尚阻挡,不能越过。两个小和尚也不能站在同一台阶,也不能向低级台阶移动。

  两法师轮流发出指令,最后所有小和尚必然会都挤在高段台阶,再也不能向上移动。轮到哪个法师指挥时无法继续移动,则游戏结束,该法师认输。

  对于已知的台阶数和小和尚的分布位置,请你计算先发指令的法师该如何决策才能保证胜出。
输入格式
  输入数据为一行用空格分开的N个整数,表示小和尚的位置。台阶序号从1算起,所以最后一个小和尚的位置即是台阶的总数。(N<100, 台阶总数<1000)
输出格式
  输出为一行用空格分开的两个整数: A B, 表示把A位置的小和尚移动到B位置。若有多个解,输出A值较小的解,若无解则输出-1。
样例输入
1 5 9
样例输出
1 4
样例输入
1 5 8 10
样例输出
1 3

#include
using namespace std;int a[1000+5];int b[1000+5];char str[1000+5];int cnt = 0;bool check(int a[]) { int ans = 0; if(cnt%2){//2个一组 奇数 最后一个不算 for(int i = 0; i < cnt-2; i += 2){ ans ^= a[i+1]-a[i]-1; } } else{ for(int i = 0; i
'9'){ ++i; } for(; i < len; ++i){ if(p[i] >= '0' && p[i] <= '9'){ num = num*10 + p[i]-'0'; } else{ a[cnt++] = num; break; } } } if(check(a)){//如果初始局面就是奇异局势 则先手输 printf("-1\n"); } else{ for(i = 0; i < cnt-1; ++i){ for(j = a[i]+1; j < a[i+1]; ++j){//当前和尚可以移动的范围 int t = a[i]; a[i] = j; //尝试移动 if(check(a)){ printf("%d %d\n",t,j); return 0; } a[i] = t;//恢复原先的a[i] 相当于回溯 } } } return 0; }

转载地址:http://lrimi.baihongyu.com/

你可能感兴趣的文章
CCScaleTo与CCScaleBy比较
查看>>
cocos2dx CCObject引用计数,内存释放分析(1)
查看>>
cocos2dx2.X 编译时,传递编译选项
查看>>
ccCArray.cpp 文件
查看>>
cocos2dx 屏幕大小
查看>>
libgdx: 2D Particle Editor工具使用
查看>>
eclipse 给jar库添加源码
查看>>
3.0正式版环境搭建(4)-- 运行(3)创建的工程
查看>>
C++ 枚举声明 enum 和 enum class
查看>>
Python optionParser模块的使用方法
查看>>
android 消灭星星出错
查看>>
PyCharm 教程(三)Hello world!
查看>>
PyCharm: 显示源码行号
查看>>
cocos2dx使用第三方字库.ttf,需要注意的事项
查看>>
cocos2dx 音频模块分析(4): 音效部分
查看>>
cocos2dx 音频模块分析(5): 音效部分
查看>>
19、Cocos2dx 3.0游戏开发找小三之Action:流动的水没有形状,漂流的风找不到踪迹、、、
查看>>
cocos2.X版本lua端使用定时器的方法
查看>>
lua math.fmod使用注意小数问题
查看>>
lua 时间转化
查看>>