美文网首页
代码集合

代码集合

作者: 惊鸿指尖 | 来源:发表于2017-06-03 15:15 被阅读0次

    1 竖式问题

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <time.h>
    #include <string.h>
    #define SWAP(x,y)(x=x+y,y=x-y,x=x-y)
    #define INF 100000000
    #define MAXN 1000
    int a[MAXN];
    int main(void)
    {
        int i,ok,abc,de,x,y,z;
        int count=0;
        char s[20],buf[99];
    
        scanf("%s",s);
        for(abc=111;abc<=999;abc++)
        {
            for(de=11;de<99;de++)
            {
                x=abc*(de%10);
                y=abc*(de/10);
                z=abc*de;
                sprintf(buf,"%d%d%d%d%d",abc,de,x,y,z);
                ok=1;
                for(i=0;i<strlen(buf);i++)
                {
                    if(strchr(s,buf[i])==NULL) ok=0;
                }
                    if(ok)
                    {
                        printf("<%d>\n",++count);
                        printf("%5d\nX%4d\n-----\n%5d\n%4d\n-----\n%5d\n\n",abc,de,x,y,z);
                    }
            }
        }
        printf("The number of solution = %d",count);
    
        return 0;
    }
    

    2. 最长回文字串

    /*
     ============================================================================
     Name        : ch1_inputandoutput.c
     Author      : Adam Zam
     Version     :
     Copyright   : Your copyright notice
     Description : Hello World in C, Ansi-style
     ============================================================================
     */
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #include <time.h>
    #include <string.h>
    #include <ctype.h>
    #define SWAP(x,y)(x=x+y,y=x-y,x=x-y)
    #define INF 100000000
    #define MAXN 5000+10
    //#define LOCAL
    
    
    char s[MAXN],buf[MAXN];
    
    typedef struct p{
        int locate;
        char str[MAXN];
    }beautiStr;
    
    
    
    int Judge(beautiStr t);
    /*
    int main(void)
    {
        int len;
        int i;
        char temp[MAXN];
        beautiStr bStr;
        //查找最长的回文字
        fgets(buf,sizeof(s),stdin);
        len=(int)strlen(buf);
    #ifdef LOCAL
        printf("%c",buf[1]);
        printf("%d",(int)strlen(buf));
    #endif
        //转化为大写字母
        for(i=0;i<len;i++)
        {
            if(isalpha(buf[i]))
            {
                buf[i]=toupper(buf[i]);//转换为大写字母
            }
        }
    #ifdef LOCAL
        printf("%s",buf);
    #endif
        int j;
        int maxLen=2;
        //从中间开始查找
        for(j=0;j<len;j++)
        for(i=maxLen;i<len;i++)
        {
            //printf("%d",i);
            memcpy(bStr.str,buf+j,i);
            bStr.str[i]=0;//末尾加一个0,表示一个字符串结束
            //printf("%s",temp);
            bStr.locate=i;
            if(Judge(bStr)==1)
            {
                maxLen=i;
                printf("%s\n",bStr.str);
    
            }
            //i++;
    
        }
    #ifdef LOCAL
        memcpy(bStr.str,"1221",5);
        printf("%s\n",bStr.str);
        printf("\n#%d\n",Judge(bStr));
    #endif
        return 0;
    }
    int Judge(beautiStr t)
    {
        int len = strlen(t.str);
        int i=0;
        for(i=0;i<len;i++)
        {
            if(t.str[i]!=t.str[len-1-i])
            {
                return 0;
            }
        }
        return 1;
    }
    */
    char p[MAXN];
    int main()
    {
        int n,m=0,max=0,x,y;
        int i,j;
        fgets(buf,sizeof(s),stdin);
        n=strlen(buf);
        for(i=0;i<n;i++)
        {
            if(isalpha(buf[i]))
            {
                p[m]=i;
                s[m++]=toupper(buf[i]);
            }
        }
        //m为实际有效字符的个数
        for(i=0;i<m;i++)
        {
            for(j=0;i-j>=0&&i+j<m;j++)
            {
                if(s[i-j]!=s[i+j])break;
                if(j*2+1>max){
                    max=j*2+1;
                    x=p[i-j];
                    y=p[i+j];
                }
            }
            for(j=0;i-j>=0&&i+j+1<m;j++)
            {
                if(s[i-j]!=s[i+j+1])break;
                if(j*2+2>max){
                    max=j*2+2;
                    x=p[i-j];
                    y=p[i+j+1];
                }
            }
        }
        for(i=x;i<=y;i++)
        {
            printf("%c",buf[i]);
        }
        printf("%s",s);
        return 0;
    }
    
    
    
    
    
    
    

    相关文章

      网友评论

          本文标题:代码集合

          本文链接:https://www.haomeiwen.com/subject/lgfmfxtx.html