标签:程序 i++ nbsp code gif 依次 初始 pre obj
九连环是由九个彼此套接的圆环和一根横杆组成,九个环从左到右依次为1-9,每个环有两种状态:1和0。1表示环在杆上,0表示环不在杆上。初始状态是九个环都在杆上,即:111111111,目标状态是九个环都不在环上,即:000000000,由初始状态到目标状态的变化规则是:
(1)第一环为无论何时均可自由上下横行;
(2)第二只环只有在第一环为1时,才能自由上下;
(3)想要改变第n(n>2)个环的状态,需要先使第一到第(n-2)环均为下杆,且第n-1个环为上杆,而与第N+1个到第九环状态无关。
(4)每改变一个环,记为一步。
现在九连环由111111111变到000000000,求中间第I步的状态。
一行,仅包含一个整数i。
一行,仅包含中间第i步的状态。如果输入的步数大于实际变换所需的步数,则输出-1。
2
010111111
根据题意模拟即可。
#include<iostream> using namespace std; int I; int a[10]={1,1,1,1,1,1,1,1,1,1}; void Work(int obj) { if(!I) return; if(!a[obj-1]) Work(obj-1); for(int i=obj-2;i>=1;i--) { if(a[i]) Work(i); } if(!I) return;//防止某些情况 I--; a[obj]=(a[obj]+1)%2; } int main() { cin>>I; for(int i=9;i>=1;i--) { if(a[i]) Work(i); } if(!I) { for(int i=1;i<=9;i++) { cout<<a[i]; } } else { cout<<-1; } return 0; }
标签:程序 i++ nbsp code gif 依次 初始 pre obj
原文地址:https://www.cnblogs.com/kcn999/p/10463848.html