【源码】C语言实现“高僧斗法”算法

  • 时间:
  • 浏览:1811
  • 来源:吧啦熊


标题:高僧斗法

    古时丧葬活动中经常请高僧做法事。仪式结束后,有时会有“高僧斗法”的趣味节目,以舒缓压抑的气氛。

  节目大略步骤为:先用粮食(一般是稻米)在地上“画”出若干级台阶(表示N级浮屠)。又有若干小和尚随机地“站”在某个台阶上。

最高一级台阶必须站人,其它任意。(如图所示)

  

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

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

    对于已知的台阶数和小和尚的分布位置,请你计算先发指令的法师该如何决策才能保证胜出。

    输入数据为一行用空格分开的N个整数,表示小和尚的位置。台阶序号从1算起,所以最后一个小和尚的位置即是台阶的总数。(N<100, 台阶总数<1000)

    输出为一行用空格分开的两个整数: A B, 表示把A位置的小和尚移动到B位置。若有多个解,输出A值较小的解,若无解则输出-1。

例如:

用户输入:

1 5 9

则程序输出:

1 4

再如:

用户输入:

1 5 8 10

则程序输出:

1 3


资源约定:

峰值内存消耗 < 64M

CPU消耗  < 1000ms

 */
//计算数组当前位置与最终状态下的相对移动步数总数
//要取得胜利则需要保证当前操作后的相对步数为偶数并且保证如果对方下次
//可以操作跟自己本次的同一位置,则这个位置移动的相对位置不超过3
//然后跟随操作对方的位置的前一个位置和移动相同的相对位置即可保证得胜
int GetCount(int *Per,int N)
{
	int count=0;
	int Max=*(Per+N-1);
	for(int i=0;i<N;i++)
	{
		count+=Max-i-*(Per+i);
	}
	return count;
}

void gaosengdoufa()
{
	char person[100];
	int Per[100];
	printf("请输入序列:\n");
	gets(person);
	int i,j,N;
	for(i=0;i<100;i++)
		Per[i]=0;
	for(i=0,j=0;person[i]!='\0';i++)
	{
		if(person[i]==' ')
		{
			if(Per[j]!=0)
				j++;
			continue; 
		}
		Per[j]=Per[j]*10;
		Per[j]+=(int)person[i]-48;
	}
	N=j+1;
	int A=0,B=0;
	int temp;
    int Count=GetCount(Per,N);	
	for(j=0;j<N;j++)
	{
		A=Per[j];
		if(j+1<N)
		{
			temp=Per[j+1];
			temp--;
			while(temp>Per[j])
			{    
				Per[j]=temp--;
				Count=GetCount(Per,N);
				if(Count%2==0)
				{
					B=Per[j];
					printf("%d %d\n",A,B);
					return;
				}
				Per[j]=A;
			}
		}
		Per[j]=A;
	}
	printf("-1");
 
}

猜你喜欢

【技术】state-machine状态机设计模式在项目中的应用

状态机的定义状态机是一种用来进行对象建模的工具,它是一个有向图形,由一组节点和一组相应的转移函数组成。状态机通过响应一系列事件而“运行”。每个事件都在属于“当前”节点的转移函数

2020-05-21

CentOS 7.x下使用yum安装MySQL5.6

CentOS 7.x下使用yum安装MySQL5.6

2020-04-16

不破不立,继续前行

2019,不破不立,继续前行。

2018-12-24

【大结局】人不彪悍枉少年:青春略有遗憾才更值得回味

网剧《人不彪悍枉少年》迎来了大结局。和小编预想的不同,无论是杨夕、花彪还是黄澄澄和李渔,没有一对最终在一起。花彪因奶奶患上老年痴呆,选择在奶奶彻底记忆不清前带奶奶环游世界。杨夕

2018-12-21

清华学霸情侣马艺妮和宋思睿,被爆学术造假,死缠烂打约3p

清华大学的特将候选人,还参加过最强大脑的清华校花马艺妮和男友宋思睿,两人死缠烂打约北京大学妹子3p被曝光。马艺妮曾在《最强大脑》节目中,说自己遇到了现实版的“肖奈”。不久前,北

2018-12-05