面试的算法1(C语言)(整理)(组合数 字符串倒置 最大公共串)
来源:互联网 发布:临沂小商品城淘宝培训 编辑:程序博客网 时间:2024/06/04 00:53
/* 求组合数: 求n个数(1....n)中k个数的组合.... 如:combination(5,3) 要求输出:543,542,541,532,531,521,432,431,421,321,*///方法1#include <stdio.h>#include<malloc.h>int *a,n,k;;int counts=0;void comb(int m,int k){ int i,j; for (i=m;i>=k;i--) { a[k]=i;if (k>1) comb(i-1,k-1);else{ counts++; for (j=a[0];j>0;j--)printf("%d ",a[j]); printf("\n");} }}void main(){ printf("Please input n:"); scanf("%d",&n); printf("Please input k:"); scanf("%d",&k); a=(int*)malloc(sizeof(int)*(k+1)); a[0]=k; comb(n,k); printf("All kinds is:%d\n",counts);}//方法2#include<stdio.h>#include<malloc.h>int n,k,*a;void comb(int N,int K){ int i;int cnt=k-K; if(cnt<k) { for(i=N;i>=k-cnt;i--) { a[cnt]=i; comb(i-1,K-1); } } else { for(i=0;i<k;i++) printf("%d ",a[i]); printf("\n"); }}void main(){ printf("Please input n:");scanf("%d",&n);printf("Please input k:");scanf("%d",&k); a=(int*)malloc(sizeof(int)*k); comb(n,k);}
/*用指针的方法,将字符串“ABCD1234efgh”前后对调显示*/#include <stdio.h>#include <string>void main(){ char str[]="ABCD1234efgh"; printf("原字符串:%s\r\n",str); char temp; int length; length=strlen(str); char *p1,*p2; p1=str; p2=(str+length-1); int cnt=length/2; while(cnt--) {temp=*p1;*p1=*p2;*p2=temp;p1++;p2--; } printf("倒置的字符串:%s\r\n",str);}
/*给定字符串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 =(char*) malloc(256); if(strstr(longstring,shortstring)!=NULL)//shortstring完全在longstring中出现 //strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。找到所搜索的字符串,则该函数返回第一次匹配的字符串的地址;如果未找到所搜索的字符串,则返回NULL。 //char *strstr(char *str1, const char *str2); //str1被查找目标 str2: 要查找对象 <span style="white-space:pre"></span>return shortstring; for(i=strlen(shortstring)-1;i>0;i--)//i复制的字符个数 {for(j=0;j<=strlen(shortstring)-i;j++)//j控制从shortstring第几位开始复制{ memcpy(substring,&shortstring[j],i); //memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。 //void *memcpy(void *dest, const void *src, size_t n); 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); elsecomman = commanstring(str1,str2); printf("the longest comman string is:%s\n",comman);}
0 0
- 面试的算法1(C语言)(整理)(组合数 字符串倒置 最大公共串)
- c语言:查找两个字符串的最大公共子串
- 面试的算法2(C语言)(整理)
- C语言数组实现最大公共字符串
- C语言的字符串倒置问题
- C/C++面试之算法系列--寻找最大公共子字符串
- 《算法导论》-最大公共子串(连续) C语言版
- 算法题-两个字符串的最大公共子串
- 常见C语言面试题之五:两个字符串的最大公共子字符串
- C语言:分别输入两段字符串,并找出其中的最大公共字符串
- 相似度算法(二)-------最大公共字符串
- 字符串排列、组合(C语言实现)
- [C/C++笔面试]编程查找两个字符串中的最大公共子串
- 最大公共子串(算法)
- sdut 1008 最大公共子串(求n个字符串的最长公共子串)
- 最大公共子串(C语言实现)
- c语言(判断最大数)
- 用链表实现单聊表的倒置(c语言编)
- Hive客户端多并发问题解决方法记录
- [POJ 2444] Partition a Matrix 暴力
- Python学习笔记一
- 聚集索引和非聚集索引的区别
- Quorum/NRW机制
- 面试的算法1(C语言)(整理)(组合数 字符串倒置 最大公共串)
- Hive0.14数据存储优化
- Java并发教程
- WebService中SOAP1.1和1.2分析
- Hive配置优化
- Surrounded Regions
- 华为OJ(学英语)
- iOS 用GCD下载网络图片方法
- Android 获取子组件