首页 > 代码库 > Brute Force & STL --- UVA 146 ID Codes
Brute Force & STL --- UVA 146 ID Codes
ID Codes |
Problem‘s Link:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=3&problem=82&mosmsg=Submission+received+with+ID+14418598
Mean:
求出可重排列的下一个排列。
analyse:
直接用STL来实现就可。自己手动写了一个,并不复杂。
Time complexity: O(n^2)
Source code:
1.STL
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int main() { char s[55]; while(scanf("%s",s)!=EOF) { if(s[0]==‘#‘) break; if(next_permutation(s,s+strlen(s))) printf("%s\n",s); else printf("No Successor\n"); memset(s,0,sizeof(s)); } return 0; }
2.手写
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int main(){ //freopen("a.txt","r",stdin); char s[55]; while(scanf("%s",s),s[0]!=‘#‘) { int i,j,len(strlen(s)); // 涨姿势了 for(i=len-2; i>=0; i--) if(s[i]<s[i+1]) break; if(i<0) puts("No Successor"); else { for(j=i+1; i<len; j++) if(s[i]>=s[j]) { char c=s[i]; s[i]=s[j-1]; s[j-1]=c; break; } sort(s+i+1,s+len); puts(s); } } return 0;}
Brute Force & STL --- UVA 146 ID Codes
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。