鱼C论坛

 找回密码
 立即注册
查看: 3347|回复: 1

大家帮忙解释一下代码

[复制链接]
发表于 2012-3-13 12:51:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<iostream>
using namespace std;
int g(int a,int b);
int main()
{
int a=98765434;
int b=12345678;
cout<<g(a,b)<<endl;
return 0;
}
int g(int a,int b)
{
char sa[]="00000000";
char sb[]="00000000";
int n=0;
int i,j;
sprintf(sa,"%8d",a);
sprintf(sb,"%8d",b);
for(i=0;i<8;i++)
{
  for(j=1;j<=8-i;j++)
  {
   char t=sa[i+j];
   sa[i+j]=0;
   if(strstr(sb,sa+i))
   {
    if(j>n) n=j;
   }
   sa[i+j]=t;
  }
}
return n;
}
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-3-13 13:46:44 | 显示全部楼层
strstr()函数是找出str2字符串在str1字符串中第一次出现的位置
sa 98765434
sb 12345678
大致一看;采用了冒泡的方法。取sa字符串的子集(sb中存在)的 开头最大位置
当i = 0, sa为9 98 987 9876 98765 987654 9876543 98765434
当i = 1, sa为8 87 876 87659 87654 876543 8765434  为8时存在sb中 这时j = 1; n =1;
当i = 2, sa为7 76 765 7654 76543 765434  为7时存在sb中 这时j=1; n=1;
当i = 3, sa为6 65 654 6543 65434 为6时存在sb中 这时j=1; n=1;
当i = 4, sa为5 54 543 5434 为5时存在sb中 这时j=1; n=1;
当i = 5, sa为4 43 434  为4时存在sb中 这时j=1; n=1;
当i = 6, sa为3, 34  为3时存在sb中 这时j=1; n=1;  为34时存在sb中 这时j=2; n=2;
当i = 7, sa为4,为4时存在sb中 这时j=1; n保持 n=2
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-12 00:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表