网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
09月14日漏签0天
c语言吧 关注:799,286贴子:4,360,635
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 首页 上一页 1 2
  • 26回复贴,共2页
  • ,跳到 页  
<<返回c语言吧
>0< 加载中...

回复:求教高手啊~一道关于数组的C程题,THX~

  • 只看楼主
  • 收藏

  • 回复
  • 124.161.164.*
快试试吧,
可以对自己使用挽尊卡咯~
◆
◆
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
main参数是以前养成的习惯 暂时没用的


  • 娄国栋
  • 异能力者
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
哦 这个可行 谢谢了


2025-09-14 01:31:08
广告
不感兴趣
开通SVIP免广告
  • 娄国栋
  • 异能力者
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你这个只能打印出最大的一个字串,如果有多个呢?还是搞个链表比较好


  • 124.161.164.*
快试试吧,
可以对自己使用挽尊卡咯~
◆
◆
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
"最长公共子串"
这是LZ题目里要求的啊? 不是么? 呵呵 如果你要寻找所有的子串 也没你说的那么麻烦
开一个动态数组   数组里面就放子串开始的下标和子串长度   然后把动态数组当做函数返回值返回给主函数就完了啊  
(动态数组长度一定是2的整数倍数)
然后 依据动态数组内容去抓子串 就是全部的匹配结果了啊   


  • 娄国栋
  • 异能力者
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
最长公共子串 不一定只有一个呀 嗯 你这办法也不错


  • 娄国栋
  • 异能力者
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你说的那个也不太容易 覆盖的时候连数组也得销毁重做啊


  • 天上掉下了八戒
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
呵呵 这个 看你怎么运用动态数组了 那个代码 好像是我2年前练手玩的时候写的 后来才发觉只能找一个最大子串   这是个问题 也懒得改了   看见楼主丢这题目出来 我才想起以前好像有过这个题目的代码呢


  • 娄国栋
  • 异能力者
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
哦 呵呵


2025-09-14 01:25:08
广告
不感兴趣
开通SVIP免广告
  • 124.161.164.*
快试试吧,
可以对自己使用挽尊卡咯~
◆
◆
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
呵呵 继续揉脸 要不 你改造改造? 呵呵呵


  • 娄国栋
  • 异能力者
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
好啊 我重写个去


  • 娄国栋
  • 异能力者
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这个好了
#include<stdio.h>
#include<string.h>
#include<malloc.h>
typedef struct Str
{
     char s[50];
     int num;
     struct Str *next;
}Str;
void main()
{
     Str *Stten(char *a,char *b),*c;
     char a[500],b[500];
     printf("Please input the firstline number:\n");
     gets(a);
     printf("Please input the secondline number:\n");
     gets(b);
     c=Stten(a,b);
     while(c)
     {
         printf("%s   ",c->s);
         c=c->next;
     }
}
Str *Stten(char *a,char *b)
{
     int i=0,j=0,k=0,l=0;
     Str *p1=NULL,*head=NULL;
     Str *p3=NULL;
     char *sp1,*sp2;
     if(strlen(a)>strlen(b))
     {
         sp1=b,sp2=a;
     }
     else
     {
         sp1=a,sp2=b;
     }
     while(*(sp1+k)!='\0')
     {
         while(*(sp2+i)!='\0' && *(sp1+j)!='\0')
         {
         if(*(sp1+j)==*(sp2+i))
         {
             p1=(Str *)malloc(sizeof(Str));
             p1->next=NULL;
             while(*(sp1+j)==*(sp2+i) && *(sp2+i)!='\0' && *(sp1+j)!='\0')
             {
                 *(p1->s+l)=*(sp2+i);
                 i++;
                 j++;
                 l++;
             }
             p1->num=l;
             *(p1->s+l)='\0';
             j=k;
             l=0;
             if(head==NULL)head=p1;
             else if(head->num==p1->num)
             {
                 p3=head;
                 while(p3->next)p3=p3->next;
                 p3->next=p1;
                 p3=NULL;
             }
             else if(head->num<p1->num)
                 head=p1;
    
         }
         else i++;
         }
         k++;
         j=k;
         i=0;
     }
     return head;
}


  • 59.72.25.*
快试试吧,
可以对自己使用挽尊卡咯~
◆
◆
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include <stdio.h>
main()
{char string1[200],string2[200];
int d[200],i,j=0,u=0,v=0,n;
printf("input the first string");
scanf("%s",string1);
printf("input the second string");
scanf("%s",string2);
for(i=0;sting1[i]=='\0'||string2=='\0';i++)
{d[i]=string1[i]-string2[i];
   n=i;
}
for(i=0;i<=n;i++)
{if(d[i]==0)
{ u++;
if(d[i+1]!=0&&v>u)
    { v=u;
      j=i;
     }
if(d[i+1]!=0)
     u=0
}
u=j;
if(v!=0)
while(j<=u+v)
   {printf("%c",string1);
    j++;   
   }
else
printf("没有相等的字符串");
}


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 首页 上一页 1 2
  • 26回复贴,共2页
  • ,跳到 页  
<<返回c语言吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示