#include
using namespace std;
int len(char *a,char *b)
{
int la,lb;
int i,j;
int c[1002][1002];
la=strlen(a);
lb=strlen(b);
for(i=0;i<=la;i++) c[i][0]=0;
for(j=0;j<=lb;j++) c[0][j]=0;
for(i=1;i<=la;i++) //注意你开始的算法,当a[0]=b[0]时的c[0][0]=c[-1][-1]+1
{
for(j=1;j<=lb;j++)
{
if(*(a+i-1)==*(b+i-1))
c[i][j]=c[i-1][j-1]+1;
else
c[i][j]=c[i-1][j]>c[i][j-1]?c[i-1][j]:c[i][j-1];
}
}
return c[la][lb];
}
int main()
{
int n,l,T;
char s1[1001];
char s2[1001];
cin>>T;
if(T<1||T>100)
return 0;
while(T--)
{
cin>>s1;
cin>>s2;
cin>>n;
l=len(s1,s2);
if(l>=n)
cout<<"Not Smaller"<
cout<<"Smaller"<
return 0;
}
——————————————————————————
还有一个
1using System;
2using System.Collections;
3namespace CompareString_AX
4{
5 /**////
6 /// Class1 的摘要说明。
7 ///
8 class Class1
9 {
10 /**////
11 /// 应用程序的主入口点。
12 ///
13 [STAThread]
14 static void Main(string[] args)
15 {
16 string a="AX_skljfgfdeerterter";//12315aaa1aaaa1211213412222";
17 string b="AX_weesdfsdee1";//31222aaaa1aaa1113412222";
18 ArrayList AX=Compare(a,b);
19 foreach(string i in AX)
20 {
21 Console.WriteLine("最长的子串为:"+i);
22 }
23 Console.ReadLine();
24 }
25 public static ArrayList Compare(string a,string b)
26 {
27 ArrayList arr=new ArrayList();
28 arr.Add("");
29 //循环遍历字符串a
30 for(int i=0;i
32 //在字符串b中查找从匹配上a[i]开始的子串
33 //优化循环次数(有点问题)for(int j=0;j
36 int n=1;//计数器
37 string subTemp="";//保存匹配上的临时子串
38 char tempa=a[i];
39 char tempb=b[j];
40 //匹配上后,两字符串的字符同时后移一位,再进行匹配,直到匹配不上
41 while(tempa==tempb)
42 {
43 subTemp+=tempa;
44 if((i+n)
46 tempa=a[i+n];
47 tempb=b[j+n];
48 n++;
49 }
50 else
51 {
52 break;
53 }
54 }
55 //比较子串与临时子串的长度
56 if(subTemp.Length>arr[0].ToString().Length&&subTemp.Length!=0)
57 {
58 arr.Clear();
59 arr.Add(subTemp);
60 }
61 else if(subTemp.Length==arr[0].ToString().Length&&subTemp.Length!=0)
62 {
63 arr.Add(subTemp);
64 }
65 }
66 }
67 //设置返回值
68 if(arr[0].ToString().Length!=0)
69 {
70 return arr;
71 }
72 else
73 {
74 arr.Clear();
75 arr.Add("没有共同的子串!");
76 return arr;
77 }
78 }
79 }
80}
81
——————————————————————————
还有一个
#include
#include
#include
int longest_length_of_comstr(char *str1, char *str2);
int find_the_longest_comstr(char *str1, char *str2);
int find_the_longest_comstr(char *str1, char *str2)
{
int maxlen=longest_length_of_comstr(str1,str2);
int len;
int num=strlen(str1) > strlen(str2) ? strlen(str1)+1 : strlen(str2)+1;
char *p,*q,*tmp1,*tmp2,*maxi;
char *comstr=(char *)malloc(sizeof(char)*num);
for (q=str1; *q!=0; q++)
for (p=str2; *p!=0; p++)
{
len=0;
tmp1=q;
tmp2=p;
while (*tmp1 && *tmp2 && *tmp1==*tmp2)
{
tmp1++;
tmp2++;
len++;
}
if(len == maxlen)
{
maxlen=len;
maxi=q;
strncpy(comstr,maxi,maxlen);
*(comstr+maxlen)=0;
printf("%s\n",comstr);
break;
}
}
free(comstr);
return 0;
}
int longest_length_of_comstr(char *str1, char *str2)
{
int maxlen=0;
int len;
char *p,*q,*tmp1,*tmp2;
for (q=str1; *q!=0; q++)
for (p=str2; *p!=0; p++)
{
len=0;
tmp1=q;
tmp2=p;
while (*tmp1 && *tmp2 && *tmp1==*tmp2)
{
tmp1++;
tmp2++;
len++;
}
if(len > maxlen)
{
maxlen=len;
}
}
return maxlen;
}
int main(void)
{
char a[]="abcaadybc";
char b[]="kbcdadwbc";
find_the_longest_comstr(a,b);
return 0;
}
这和变量赋值有什么关系...
int
a=12
十进制
int
b=012
八进制
int
c=0012
十六进制
二进制转十进制
例
101
1*2^0+0*2^1+1*2^2=5
就是把二进制每一位分解开
从第一位开始
分别乘以2的0次
1次
2次
3次...
二进制转八进制
用421码,每
三位一分,不足左补0,例
1010100
001,010,100
分别对应
421,421,421
位数累加,结果就是
124
二进制转十六进制用8421码,与八进制类似
反过来就是其他进制转2进制..
好简单的。。不要具备什么,不是傻子多可以。
二十几个单词记下来一帮就搞定了。。。
要有信心啊。。
呵呵
信心+耐心
既然你要网址我就给你,不过我推荐去买书看。
来我空间吧http://user.qzone.qq.com/8493996
在日志里仔细找找