【UVA/Codeforces】1584 Circular Sequence / 792B Counting-out Rhyme(就是一个圈儿...)
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(就是一个圈儿...)相关推荐
- 1584 - Circular Sequence
Circular Sequence Some DNA sequences exist in circular forms as in the following figure, which shows ...
- Circular Sequence UVA - 1584
原题及翻译 Some DNA sequences exist in circular forms as in the following figure, which shows a circular ...
- UVA1584 Circular Sequence【字符串】
Circular Sequence UVA - 1584 题目传送门 题目大意:输入一个环形字符串,需输出其最小字典序的形式的字符串. AC代码: #include <cstdio> #i ...
- UVA1584 UVALive3225 Circular Sequence【水题】
Some DNA sequences exist in circular forms as in the following figure, which shows a circular sequ ...
- UVa1584 - Circular Sequence
//UVa1584 - Circular Sequence //题目:给你一个环状串,输出它以某一位置为起点时得到最小字典序的串. //分析:从初位置到末位置每次更新字典序较小的起始位置 #inclu ...
- 例题3-6 环状序列(Circular Sequence)
我的代码(vjudge AC): //Circular Sequence #include <stdio.h> #include <string.h> bool less(co ...
- (艾迪茉莉转圈圈~~找最小环)Circular Sequence UVA - 1584
#include<iostream> #include<string.h> #include<stdio.h> using namespace std; char ...
- CF思维联系–CodeForces -224C - Bracket Sequence
ACM思维题训练集合 A bracket sequence is a string, containing only characters "(", ")", ...
- CodeForces - 224C. Bracket Sequence (栈模拟)简单做法
A bracket sequence is a string, containing only characters "(", ")", "[&quo ...
最新文章
- 泛型排序器TComparer
- 如何测量PN中的耗散层两边的电位差?
- 单片机成长之路(51基础篇) - 008 C51 的标示符和关键字
- Basic的Json与Xml
- 腾讯计费全面开放,为你而来!
- 在pom.xml中配置nexus上传地址
- linkerd mysql_Linkerd和k8s无法正常工作
- 线性表的Java实现--链式存储(双向链表)
- 网站缓存技术总结( ehcache、memcache、redis对比)
- 【SpringCloud】 第十篇: 高可用的服务注册中心
- Web Hacking 101 中文版 十、跨站脚本攻击(二)
- MyBatis 中的mapper.xml详解
- MySQL集群架构-DRBD+headbeat +lvs+keepalived
- python 爬取历史天气
- 二叉树前序遍历、中序遍历、后序遍历 递归和非递归方式实现
- 精灵五笔 优化指南【原】
- 2020、2021年FRM一级二级notes
- WPS Linux版的公式自动编号且右对齐的方法
- PMP备考大全:经典题库(6月第1周)
- send 命令 linux,linux的send命令
热门文章
- (C++)1022 D进制的A+B 除基取余法将10进制数换成给定进制数
- Python培训分享:python如何用cookie实现自动模拟登录?
- centos6.5环境DNS-本地DNS主从服务器bind的搭建
- 进程间通信IPC之--共享内存
- 正则表达式测试工具 Regex Tester 的使用方法
- 【翻译】将Ext JS Grid转换为Excel表格
- Mac下配置Maven
- MySQL基础day03_数据的导入、导出-MySQL 5.6
- Linux下多播的配置【十全十美】
- Android模拟器SD卡的使用