一道北电的笔试题!大家练练吧!
输入一个字符串,打印出该字符串的所有子串:如输入"abc",则输出a,b,c,ab,bc,abc
char str[] = "abc";
int len = strlen(str);
/*把解析过程在逻辑上扩展成为一棵n+1层的完全满二叉树,第一个节点编号为1,求得最左边叶子节点2^n和最右边叶子节点的编号2^(n+1)-1*/
int startleafno = 1, endleafno = 1;
int i = 1;
while(i++ <= len){
startleafno <<= 1;
endleafno <<= 1;
}
endleafno <<= 1;
endleafno -=1;
for(int no = startleafno;no <= endleafno;no++){
int level = len + 1;
int parentno = no;
while(level >= 1){
int temp = parentno>>1;
temp = temp<<1;
if(temp != parentno){
printf("%c",str[(len + 1) - level]);
}
parentno = parentno>>1;
level--;
}
printf(",");
}
printf("\n");
有一个整型数组,要求从中找出一个和最大的连续子集,输出最大的和。
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余3页未读,立即下载