开始看到这个小游戏,发现规则很简单,翻了一下评论区,发现居然可以写代码解,而且代码看起来很简单,于是好久没写代码的我想练习一下,自己写了一个c。发下代码:
#include <cstdio>
#include <cstdlib>
int ok=0;
void puts(int &p,int &q){ if(p%2) { q+=p; p=0; } else { p/=2; q+=p; }}void dfs(int a,int b,int c,int now,int mini){ if(now>mini) return;
if(a==b&&b==c) ok=1; if(ok) return; int x,y,z; while (ok==0){ x=a,y=b,z=c; puts(x,y); dfs(x,y,z,now+1,mini); if(ok) { printf("A->B "); return;} x=a,y=b,z=c; puts(y,x); dfs(x,y,z,now+1,mini); if(ok) { printf("B->A "); return;} x=a,y=b,z=c; puts(y,z); dfs(x,y,z,now+1,mini); if(ok) { printf("B->C "); return;} x=a,y=b,z=c; puts(z,y); dfs(x,y,z,now+1,mini); if(ok) { printf("C->B "); return;} x=a,y=b,z=c; puts(x,z); dfs(x,y,z,now+1,mini); if(ok) { printf("A->C "); return;} x=a,y=b,z=c; puts(z,x); dfs(x,y,z,now+1,mini); if(ok) { printf("C->A "); return;} if(now) break; mini++; } return;}int main(){ int A,B,C; scanf("%d%d%d",&A,&B,&C); dfs(A,B,C,0,1); return 0;}

