生活随笔
收集整理的這篇文章主要介紹了
C语言面试算法题(一)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1.求組合數(shù): 求n個數(shù)(1....n)中k個數(shù)的組合....
?????????? 如:combination(5,3)
? 要求輸出:543,542,541,532,531,521,432,431,421,321,
| /* ?求組合數(shù): 求n個數(shù)(1....n)中k個數(shù)的組合.... ???????????如:combination(5,3) ??要求輸出:543,542,541,532,531,521,432,431,421,321, */ #include <stdio.h> #include <error.h> int pop(int *); int push(int ); void combination(int ,int);
int stack[3]={0}; int top = -1;
int main() { ??int n,m; ????n = 5; ????m = 3; ??combination(n,m); ??printf("\n"); }
void combination(int m,int n) { ??int temp = m; ??push(temp); ??while(1) ??{ ????if(1==temp) ????{ ??????if(pop(&temp) && stack[0]==n) ????????break; ????} ????else if(push(--temp)) ????{ ??????printf("%d%d%d\n",stack[0],stack[1],stack[2]); ??????pop(&temp); ????} ??} }
int push(int i) { ??stack[++top]=i; ??if(top<2) ????return 0; ??else ????return 1; }
int pop(int *i) { ??*i = stack[top--]; ??if(top>=0) ????return 0; ??else ????return 1; }
|
2.、用指針的方法,將字符串“ABCD1234efgh”前后對調(diào)顯示
| #include <stdio.h> #include <string.h> int main() { ??char str[]="ABCD123efgh"; ??int length = strlen(str); ??char *p1= str; ??char *p2 = str+length -1; ??while(p1<p2) ??{ ????char c = *p1; ????*p1 = *p2; ????*p2 = c; ????++p1; ????--p2; ??} ??printf("str now is %s\n",str); ??return 1; } |
3.給定字符串A和B,輸出A和B中的最大公共子串。比如A="aocdfe" B="pmcdfa" 則輸出"cdf"
| #include <stdio.h> #include <stdlib.h> #include <string.h>
char *commanstring(char shortstring[],char longstring[]) { ??int i,j; ??char *substring = malloc(256); ??if(strstr(longstring,shortstring)!=NULL) ????return shortstring; ??for(i=strlen(shortstring)-1;i>0;i--) ??{ ????for(j=0;j<=strlen(shortstring)-i;j++) ????{ ??????memcpy(substring,&shortstring[j],i); ????substring[i]='\0'; ????if(strstr(longstring,substring)!=NULL) ??????return substring; ????} ??} ??return NULL; }
void main(void) { ??char *str1 = "aocdfe"; ??char *str2 = "pmcdfa"; ??char *comman = NULL; ??if(strlen(str1)>strlen(str2)) ????comman= commanstring(str2,str1); ??else ????comman = commanstring(str1,str2); ??printf("the longest comman string is:%s\n",comman); ?? ?}
|
總結(jié)
以上是生活随笔為你收集整理的C语言面试算法题(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。