解题思路:
注意事项:
参考代码:
不解释了
#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语言程序设计教程(第三版)课后习题9.1 (Java代码)浏览:471 |
2003年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:540 |
上车人数 (C语言代码)浏览:777 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:898 |
【偶数求和】 (C语言代码)浏览:556 |
【蟠桃记】 (C语言代码)浏览:1023 |
a+b浏览:432 |
A+B for Input-Output Practice (IV) (C语言代码)浏览:485 |
局部变量作函数返回值的问题浏览:967 |
Tom数 (C语言代码)浏览:552 |