69,371
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <string.h>
char * s1;
char * s2;
int digitsave[20];
void output()
{
int length = strlen(s2);
for(int iter = 0 ; iter != length ;++iter)
{
printf("%d",digitsave[iter]);
}
printf("\n");
}
void cmp(int index1 , int index2)
{
if(s2[index2] == '\0')
{
output();
return;
}
if(s1[index1] == '\0') {return;}
if(s1[index1] != s2[index2])
{
cmp(index1+1 , index2);
return;
}
if(s1[index1] == s2[index2])
{
digitsave[index2] = index1+1;
cmp(index1+1,index2+1);
cmp(index1+1,index2);
}
}
int main(int argc , char ** argv)
{
s1 = argv[1];
s2 = argv[2];
cmp(0 , 0);
return(0);
}
ii@ubuntu:~/桌面/codes/tests$ ./a.out abdbcc abc
125
126
145
146
ii@ubuntu:~/桌面/codes/tests$ ./a.out adbbcbc abc
135
137
145
147
167
ii@ubuntu:~/桌面/codes/tests$ ./a.out abcdefghi aeh
158
//以aabc abc为例
//显示杨辉三角形
#include<stdio.h>
char s1[]="abdbcbc";
char s2[]="abc";
int i,*pos;
void find(int si,int di)
{
if(s2[di]==0)
{
for(i=0;i<3;++i) printf("%d",pos[i]+1);
printf("\n");
return;
}
while(s1[si]!=0)
{
if(s1[si]==s2[di])
{
pos[di]=si;
find(si+1,di+1);
}
++si;
}
}
void main()
{
pos=malloc(sizeof(int)*strlen(s2));
find(0,0);
free(pos);
}
运行结果:
125
127
145
147
167
请按任意键继续. . .
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void display(const char *buf, const char *sub, const int len, int tab[], int depth, int distance)
{
int i;
if (len == depth)
{
for (i = 0; i < len; ++i)
{
printf("%d", tab[i]);
}
printf("\n");
}
else
{
while (*buf)
{
if (*buf == *sub)
{
tab[depth] = distance + 1;
display(buf + 1, sub + 1, len, tab, depth + 1, distance + 1);
}
++distance;
++buf;
}
}
}
int main()
{
int tab[100];
const char *buf = "abdbcc";
const char *sub = "abc";
display(buf, sub, strlen(sub), tab, 0, 0);
system("pause");
return 0;
}