https://vjudge.net/problem/UVA-1584

1584 Circular Sequence

输入一个字符串,可以以字符串中任意一个字母作为起始,输出字典序最小的那个字符串

两种方法,一种是设两个标记

【样例输入】CGAGTCAGCT

【样例输出】AGCTCGAGTC

一开始 ans = 0,i=1;(C < G)ans不变

当i = 2时,ans = 0,因为A < C,所以 ans = 2;

当i = 6时,这时ans = 2,一直往后比较,因为ans指向的第三个字符是T,i 指向的第三个字符是C,C < T,所以ans = 6;

最后输出。

下面这个程序是通过一个一个比较去找到字典序最小的那一个。即ans = 6以后,for循环仍然继续。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
using namespace std;char s[105];
int len;
int fun(int ans,int i)
{for(int j=0;j<len;j++){if(s[(ans+j)%len]!=s[(i+j)%len])return s[(ans+j)%len] > s[(i+j)%len];}return 0;
}int main ()
{int i,T;scanf("%d",&T);while(T--){scanf("%s",s);int ans = 0;len = strlen(s);for(i=1;i<len;i++){if(fun(ans,i))ans = i;}for(i=0;i<len;i++){printf("%c",s[(ans+i)%len]);}printf("\n");}return 0;
}

稍加改进以后是直接找出字符串中最小的那一个字符,再看该字符是否出现不止一次

#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
using namespace std;char s[105];
int len;
int fun(int ans,int i)
{for(int j=0;j<len;j++){if(s[(ans+j)%len]!=s[(i+j)%len])return s[(ans+j)%len] > s[(i+j)%len];}return 0;
}int main ()
{int i,T;scanf("%d",&T);while(T--){scanf("%s",s);int ans = 0;char str = 'Z';len = strlen(s);for(i=0;i<len;i++){if(s[i]<str){ans = i;str = s[i];}}   for(i=0;i<len;i++){if(s[i]==s[ans] && i!=ans){if(fun(ans,i)){ans = i;}}}for(i=0;i<len;i++){printf("%c",s[(ans+i)%len]);}printf("\n");}return 0;
}

因为字符串不是很长,也可以用string来写

#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
using namespace std;int main ()
{int i,T;cin >> T;string s;while(T--){string minn(105,'Z');char str = 'Z';cin >> s;for(i=0;i<s.length();i++){if(s[i] < str)str = s[i];}for(i=0;i<s.length();i++){if(s[i]==str){string ans = s.substr(i,s.length()-i) + s.substr(0,i);if(ans < minn)minn = ans;}}cout << minn << endl;}return 0;
}

792B  Counting-out Rhyme

http://codeforces.com/problemset/problem/792/B

有n个小朋友,编号分别是从1到n,每个小朋友都有当领导的机会,第一次是1号小朋友当领导,下面一行是k个数,每个数用一遍,从当领导的小朋友往后数(领导不算在内)a[i]个,可以把这n个人看成一个循环,到哪个小朋友截至,则这个小朋友要退出游戏,退出的小朋友的后面一个人成为新的领导,知道用完k个数,按顺序输出退出的小朋友的编号。

模拟+vector

#include <iostream>
#include <string>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <map>
#include <vector>
#include <algorithm>
using namespace std;
int a[105];
int main ()
{vector<int> v;int i,n,k;cin >> n >> k;for(i=1;i<=n;i++){v.push_back(i);}for(i=0;i<k;i++){cin >> a[i];}int pos = 0;int j = 0;while(k--){pos = (pos+a[j++])%v.size();cout << v[pos] ;if(k)cout << " ";v.erase(v.begin()+pos);}cout << endl;return 0;
} 

【UVA/Codeforces】1584 Circular Sequence / 792B Counting-out Rhyme(就是一个圈儿...)相关推荐

  1. 1584 - Circular Sequence

    Circular Sequence Some DNA sequences exist in circular forms as in the following figure, which shows ...

  2. Circular Sequence UVA - 1584

    原题及翻译 Some DNA sequences exist in circular forms as in the following figure, which shows a circular ...

  3. UVA1584 ​​​​​​​Circular Sequence【字符串】

    Circular Sequence UVA - 1584 题目传送门 题目大意:输入一个环形字符串,需输出其最小字典序的形式的字符串. AC代码: #include <cstdio> #i ...

  4. UVA1584 UVALive3225 Circular Sequence【水题】

      Some DNA sequences exist in circular forms as in the following figure, which shows a circular sequ ...

  5. UVa1584 - Circular Sequence

    //UVa1584 - Circular Sequence //题目:给你一个环状串,输出它以某一位置为起点时得到最小字典序的串. //分析:从初位置到末位置每次更新字典序较小的起始位置 #inclu ...

  6. 例题3-6 环状序列(Circular Sequence)

    我的代码(vjudge AC): //Circular Sequence #include <stdio.h> #include <string.h> bool less(co ...

  7. (艾迪茉莉转圈圈~~找最小环)Circular Sequence UVA - 1584

    #include<iostream> #include<string.h> #include<stdio.h> using namespace std; char ...

  8. CF思维联系–CodeForces -224C - Bracket Sequence

    ACM思维题训练集合 A bracket sequence is a string, containing only characters "(", ")", ...

  9. CodeForces - 224C. Bracket Sequence (栈模拟)简单做法

    A bracket sequence is a string, containing only characters "(", ")", "[&quo ...

最新文章

  1. 泛型排序器TComparer
  2. 如何测量PN中的耗散层两边的电位差?
  3. 单片机成长之路(51基础篇) - 008 C51 的标示符和关键字
  4. Basic的Json与Xml
  5. 腾讯计费全面开放,为你而来!
  6. 在pom.xml中配置nexus上传地址
  7. linkerd mysql_Linkerd和k8s无法正常工作
  8. 线性表的Java实现--链式存储(双向链表)
  9. 网站缓存技术总结( ehcache、memcache、redis对比)
  10. 【SpringCloud】 第十篇: 高可用的服务注册中心
  11. Web Hacking 101 中文版 十、跨站脚本攻击(二)
  12. MyBatis 中的mapper.xml详解
  13. MySQL集群架构-DRBD+headbeat +lvs+keepalived
  14. python 爬取历史天气
  15. 二叉树前序遍历、中序遍历、后序遍历 递归和非递归方式实现
  16. 精灵五笔 优化指南【原】
  17. 2020、2021年FRM一级二级notes
  18. WPS Linux版的公式自动编号且右对齐的方法
  19. PMP备考大全:经典题库(6月第1周)
  20. send 命令 linux,linux的send命令

热门文章

  1. (C++)1022 D进制的A+B 除基取余法将10进制数换成给定进制数
  2. Python培训分享:python如何用cookie实现自动模拟登录?
  3. centos6.5环境DNS-本地DNS主从服务器bind的搭建
  4. 进程间通信IPC之--共享内存
  5. 正则表达式测试工具 Regex Tester 的使用方法
  6. 【翻译】将Ext JS Grid转换为Excel表格
  7. Mac下配置Maven
  8. MySQL基础day03_数据的导入、导出-MySQL 5.6
  9. Linux下多播的配置【十全十美】
  10. Android模拟器SD卡的使用