⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 11.txt

📁 一个在计算机客科学与技术专业中数据结构课程非常经典算法
💻 TXT
字号:
#include <stdio.h> 
#include <string.h> 
#define MAXN 20 
#define MAXL 256 
int n; 
int len[MAXN]; 
char str[MAXN][MAXL]; 

int match(char *s1,char *s2,  int len  )       //利用len比较两个串是否相等!
{ 
   while (len--) 
   { 
      if (*s1!=*s2) return 0; 
      s1++; 
      s2++; 
   } 
 return 1; 
} 

int main() 
{ 
  int i,j; 
  int ans,ansi; 
  char line[100]; 
  
  scanf("%d",&n);      //  输入个数n
  
  gets(line);        //得到""
  
  for (i=0;i<n;i++) 
  { 
      gets(str[i]); 
       
  } 
 
 ans=-1;          //ans相等的个数
////////////////////////////////////////////////////////////////////////////////////
 for (j=len[0]; ans==-1 && j>0;   j--)       //以第一行为依据,j是第一个串的长度
   
   for ( i=0;  ans==-1 && i+j-1<len[0];  i++ ) 
   { 
      int flag1=1; 
      
      for (int k=1; flag1 && k<n;  k++)      //从第二行开始进行比较; n表示行数
	  { 
         int flag2=0; 
          
         for (int s =0; !flag2 && s+j-1<len[k]; s++) 
           if (match(str[0]+i,str[k]+ s ,j)) 
			   flag2=1; 
         if (!flag2) flag1=0;  //flag为假
	  } 

      if (flag1) 
	  { 
          ans=j;         //相等的长度
          ansi=i;       //在第一行中的相等的位置
	  } 
   
   }//for


//////////////////////////////////////////////////////////////////////////////////
 
 
 if (ans==-1) 
	 puts("No common substrings!"); 
 else 
 { 
     for (i=0;i<ans;i++) putchar(str[0][i+ansi]); 
      putchar('\n'); 
 } 

 return 1;

}//main

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -