【C语言程序】基因编码
输入一个长为n=2k(k≤8)01串s,按照"ABC编码规则"进行编码,ABC编码规则是:
A //若s串全是0
T(s)= B //若s串全是1
CT(s1)T(s2) //否则把s串分成两个等长的子串s1和s2
例如:
T(01001011)
=CT(0100)T(1011)
=CCT(01)T(00)CT(10)T(11)
=CCCT(0)T(1)ACCT(1)T(0)B
=CCCABACCBAB
#include <stdio.h> #include <string.h> void f(char a[],int begin,int end) { int num_A=0,num_B=0; int i; for(i=begin;i<end;i++) { if(a[i]=='0') num_A++; //记录0的个数 else if(a[i]=='1') num_B++; //记录1的个数 } if(num_A==end-begin)//如果该数组全为0 printf("A"); else if(num_B==end-begin)//如果该数组全为1 printf("B"); else { printf("C"); f(a,begin,(end+begin)/2); f(a,(end+begin)/2,end); } } int main() { char a[500]; int length; gets(a); length=strlen(a); f(a,0,length); return 0; }