当前位置: 首页 > news >正文

例题 3-6 环状序列

以后 你们可以叫我   袁大婶   没错  就是这么猛.

 

------下面附上 我的代码

/*给一个长度为n的DNA环状串,请你输出字典序最小的 那个  序列*/
/*你怎么想?         不开字符串 尽量减少时间空间复杂度   打败   刘大婶*/
/*  用两个标记变量  一个字母  然后比较 大小  比较小的 那一个储存下来   然后让比较大的那一个 ++    开始对下一个进行遍历   但是时间复杂度应该比较高  能达到n^2     */
/*CCCC*/
#include<stdio.h>
#include<string.h>
int main()
{
    int q1,q,l,t,e,i,j,m,n;
    char a[200];
    scanf("%d",&t);
    while(t--)
    {
        scanf("%s",a);    //输入     DNA串
        l=strlen(a);
        m=l;
        q=0;
        q1=1;
        m--;
        while(m--)
        {
        for(e=0,i=q,j=q1;e<l;i++,j++)
        {
            if(i>=l||j>=l)//很关键的一个东西,用于实现圆环
            {
                i=i%l;
                j=j%l;
            }
            if(a[i]>a[j])         //一直都让  q  为字典序最小的首字母的开头.
            {
                q=q1;
                q1++;
                break;
            }
            if(a[i]<a[j])
            {
                q1++;
                break;
            }
        }
        if(e==l)
            q1++;
        }
        for(i=0;i<l;q++,i++)
        {
            q=q%l;
            printf("%c",a[q]);
        }
        printf("\n");
    }
}

下面附上  刘大婶的


代码并且 还有值得学习之处

#include<stdio.h>
#include<string.h>
#define maxn 105
int less(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])          //  
        return s[(p+i)%n]<s[(q+i)%n];   //
    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 i=1;i<n;i++)
            if(less(s,i,ans))
            ans=i;
        for(int i=0;i<n;i++)
            putchar(s[(i+ans)%n]);
        putchar('\n');
    }
    return 0;
}

 

转载于:https://www.cnblogs.com/A-FM/p/5152219.html

相关文章:

  • JQuery中使用Ajax实现诸如登录名检测等异步请求Demo
  • java String、Data、Calendar时间转化
  • js 打印
  • Java NIO读书笔记
  • angular
  • Oracle使用总结
  • 通过keepalived实现 MySQL VIP 自动切换
  • Swift - 37 - 值类型和引用类型的简单理解
  • 算法导论 第六章 2 优先队列(python)
  • gdb跟踪应用程序原理浅析
  • ORACLE 11G内存管理方式
  • 正则表达式总结
  • Cocos2d-js使用ETC1格式的图片
  • 2015年年终总结
  • Java实现多线程邮件发送
  • 4个实用的微服务测试策略
  • docker-consul
  • Javascript Math对象和Date对象常用方法详解
  • Node项目之评分系统(二)- 数据库设计
  • php的插入排序,通过双层for循环
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • Python进阶细节
  • Spring框架之我见(三)——IOC、AOP
  • spring学习第二天
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 关于Java中分层中遇到的一些问题
  • 基于axios的vue插件,让http请求更简单
  • 协程
  • 栈实现走出迷宫(C++)
  • 字符串匹配基础上
  • 最简单的无缝轮播
  • 【云吞铺子】性能抖动剖析(二)
  • Hibernate主键生成策略及选择
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • ​马来语翻译中文去哪比较好?
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (02)vite环境变量配置
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)ABI是什么
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .NET MVC之AOP
  • .NetCore项目nginx发布
  • .NET处理HTTP请求
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • .NET项目中存在多个web.config文件时的加载顺序