解题思路:
注意事项:
参考代码:
不解释了
#include<cstdio> #include<string> #include<iostream> using namespace std; int n,sum[12][5];//存储每一个节点。第一个下标表示第几层(简便起见,0表示最底层),第二个下标表示第几个节点,用sum[i][0]表示第i层已经存了几个节点 bool a[(1<<10)+5];//原序列 int main() { scanf("%d",&n); string num; cin>>num;//然而我到现在也不会用scanf输入string for(int i=0;i<(1<<n);i++) { if(num[i]=='0')a[i]=0; if(num[i]=='1')a[i]=1; } for(int i=0;i<(1<<n);i++)//扫描原序列 { if(a[i]==0) { printf("B"); sum[0][++sum[0][0]]=0;//在第0层存储 } if(a[i]==1) { printf("I"); sum[0][++sum[0][0]]=1;//在第0层存储 } int j=0; while(sum[j][0]==2)//满二进一 { sum[j][0]=0; if(sum[j][1]==1&&sum[j][2]==1)//左右子节点都是I { printf("I"); sum[j+1][++sum[j+1][0]]=1;//进位 } else if(sum[j][1]==0&&sum[j][2]==0)//左右子节点都是B { printf("B"); sum[j+1][++sum[j+1][0]]=0;//进位 } else//其它情况 { printf("F"); sum[j+1][++sum[j+1][0]]=2;//进位 } j++; } } printf("\n"); return 0; }
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:556 |
九宫重排 (C++代码)浏览:1410 |
C语言训练-排序问题<1> (C语言代码)浏览:636 |
简单的a+b (C语言代码)浏览:752 |
C语言训练-求1+2!+3!+...+N!的和 (C语言代码)万恶的long long浏览:906 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:467 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:769 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:582 |
Cylinder (C语言描述,蓝桥杯)浏览:1279 |
1009题解浏览:802 |