纪念困扰我两天的问题Brute-Force算法

来源:互联网 发布:网络舆情危机 编辑:程序博客网 时间:2024/05/16 10:05

第一:一定要仔细,真的,昨天不知道是哪里写错了,导致我用一天的时间都没把这个简单的问题用程序写出来

第二:切记做任何算法之前一定要先判断合法否,不合法可直接不予处理,节省很多时间和空间

第三:界限非常重要,切记上下界限

按照书上的实现:

int index(char *s,char *t, int pos)
{
 int i,j,len1=0,len2=0;
 while(s[len1]!='\0')len1++;
 while(t[len2]!='\0')len2++;
 printf("%d\n%d",len1,len2);
 if(pos<0||pos>len1||pos>len1-len2+1)
 {
  printf("Can't do this operation!\n");
  return 0;
 }
 i=pos-1;j=0;
 
 while(i<len1&&j<len2)
 {
  if(s[i]==t[j])
  {
   i++;
   j++;
   
  }
  else
   
   {
    i=i-j+1;
    j=0;
   
   }
 
 }
  if(j>=len2)
  {
   printf("OK~~~~");
   return i-len2+1;
  }
  else
  {
   printf("sorry~~~~");
   return 0;
  }


按照我的实现:

我只是多加了一句判断是否已经对比结束,若是则直接成功推出,不用进行后面的操作,其实效果一样,不影响什么,之所以我加了这一句就是昨天以为书上的是错的,自己写了一下,就出现了自己的版本,其实还是一样的思想:

 while(i<len1&&j<len2)
 { while(s[i]==t[j])
  {
   i++;
   j++;
   if(t[j]=='\0')
     {
      printf("OK~~~~");
      return i-j+1;
     }

  }
 
   
    i=i-j+1;
    j=0;
   

  
 }


   printf("sorry~~~~");
   return 0;
  }

仅仅只是纪念自己的辛酸,因为昨天一天竟然因为不仔细,全耗在这么几句上了,昨天真的好受打击


0 0
原创粉丝点击