码迷,mamicode.com
首页 > 编程语言 > 详细

数组与字符串的习题

时间:2019-04-19 00:55:09      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:编译   ++   输出   int   class   clu   开始   const   pre   

WERTYU

  1. 常量数组:并不需要指明大小,编译器可以完成计算

回文词

  1. 使用常量数组
  2. 不会输入空格,可以安全的使用scanf
  3. isalpha, idigit, isprint...在ctype.h中定义,toupper, tolower等工具可以用来转换大小写。

猜数字游戏

  1. scanf("%d",&a[i]);

 生成元

  x+x的各个数字之和得到y,说明x是y的生成元,给出n(1,100000),求最小生成元。无解输出0;

  1. 只需要一次枚举100000内的所有正整数,标记"m+m的各个数字之和得到的数有一个生成元是m",最后查表
  2. 即找出这个数是哪个数的最小生成元。
  3. #include<stdio.h>
    #include<string.h>
    #define maxn 1000005
    int ans[maxn];
    int main()
    {
        int T,n;
        memset(ans,0,siezeof(ans));
        for(int m=1;m<maxn;m++)
        {
            int x=m,y=m;
            while(x>0)
            {
                y+=x%10;
                x/=10;
            }
            if(ans[y]==0||m<ans[y])    
                ans[y]=m;
        }    
        scanf("%d",&T);
        while(T--)
        {
            scanf("%d",&n);
            printf("%d\n",ans[n]);
        }
        return 0;
    }

     

环状序列

  1. Q: 长度为n(n<=100)的环状DNA串(只含A,C,G,T),任务:输出改环状串的最小表示。
  2. 字典序:字符串在字典中的顺序,对于两个字符串,
    1. 第一个位置开始比较,某个位置字符不同时,字符较小的串,字典序较小
    2. 较短的字符串的字典序小(hi<history)
  3. #include<stdio.h>
    #include<string.h>
    #define maxn 105
    
    //判断p是否比q的字典序小 
    int less(const char*s,int p,int q)
    {
        int n=strlen(s);
        for(int i=0;i<n;i++)
        {
            if(s[(p+i)%n]!=s[(q+i)%n])            //如果遇到字符不同,就进行判断; 
            {                                    //注意,循环的可以用"...%n"来进行循环。 
                return (s[(p+i)%n<s[(q+i)%n]]);            //如果p<q,就返回1,其他情况返回0; 
            }
         } 
         return 0;
    }
    
    int main()
    {
        int T;
        char s[maxn];
        scanf("%d",&T);
        while(T--)
        {
            scanf("%s",s);
            int ans=0;
            int n=strlen(s);
            for(int j=0;j<n;j++)
            {
                if(less(s,j,ans))        //不断判断更新ans的值 
                    ans=j;
            }
            for(int i=0;i<n;i++)
            {
                putchar(s[(i+ans)%n]);        //用putchar一个个输出字符 
            }
            putchar(\n);
        }
        return 0;
    }

     

  4.   注意有putchar(),和用"%n"来循环

数组与字符串的习题

标签:编译   ++   输出   int   class   clu   开始   const   pre   

原文地址:https://www.cnblogs.com/xuwanwei/p/10727056.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!