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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#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.手写

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#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;
}

  

posted @   北岛知寒  阅读(151)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示
主题色彩