文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>编写一个函数

编写一个函数

时间:2010-12-15  来源:我是826

//回文数程序

#include <stdio.h>
#include <string.h>
#include <memory.h>
//#include <assert.h>

#define MAX_LEN 80
char szInput[MAX_LEN+1];
unsigned char B[(MAX_LEN+1)*MAX_LEN/8];//感觉跟Bit8有关系,但具体说不出来什么

unsigned char Bit8[8]=;//看来是"位"操作

#define GETB(i,j) (B[(i)*10+((j)>>3)] & Bit8[(j) & 0x7])
#define SETB(i,j) (B[(i)*10+((j)>>3)] |= Bit8[(j) & 0x7])
int length;
int getcode()
{
int i,j,notfound1,notfound2=0;
if(length <2)
  return 1; //如果只输入两个字符,则返回1

memset(B,0,(length+1)*10);//MAX_LEN/8?

for(i=0;i <2;++i)
{
  for(j=0;j <length;++j)
  SETB(i,j);//B[i][j]=1;

}
for(i=2;i <=length;++i)
{
  for(notfound1=1,j=0;j <=length-i;++j)
  {
  if(GETB(i-2,j+1)/*B[i-2][j+1]*/ && szInput[j]==szInput[j+i-1])
  {
    SETB(i,j);//B[i][j]=1;

    //printf("%d,%d = 1n",i,j);

    notfound1=0;
  }
  }
  if(notfound1)
  {
  if(notfound2)
    return i-2;
  notfound2=1;
  }
  else
  {
  notfound2=0;
  }
}
if(notfound2)
  return length-1;
return length;
}

int main(void)
{

while(scanf("%s",szInput)!=EOF)
{
  length=strlen(szInput);
  //assert(length <=MAX_LEN);

  printf("%dn",getcode());
}
    return 0;
}


相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载