解题思路:
注意事项:
参考代码:
不解释了
#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语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:668 |
C语言训练-角谷猜想 (C++代码)(3N+1问题)浏览:1751 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:522 |
C语言程序设计教程(第三版)课后习题9.1 (Java代码)浏览:471 |
【明明的随机数】 (C++代码)浏览:781 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:378 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:842 |
回文数字 (C语言代码)浏览:2510 |
陈教主的三角形 (C语言代码)浏览:1143 |
整数平均值 (C语言代码)浏览:787 |