下面我用图来描述64个盘子的转移流程 看图偷来的 这里我们先把上方的63个盘子看成整体,这下就等于只有两个盘子,自然很容易了,我们只要完成两个盘子的转移就行了,好了现在我们先不管第64个盘子,假设a柱只有63个盘子,与之前一样的解决方式,前62个盘子先完成移动目标。
二分
#include<bits/stdc++.h> using namespace std; int mark[100]; int num[200]; int r,n,cnt; void print() { cnt++; for(int i=1;i<=r;i++) { cout<<num[i]; } cout<<endl; } void search(int x) { for(int i=1;i<=n;i++) { if(!mark[i]) { mark[i]=1; num[x]=i; if(x==r) print(); search(x+1); mark[i]=0; } } } int main(){ cin>>n>>r; search(1); cout<<endl<<endl<<cnt; return 0; }