设为首页 加入收藏

TOP

ACM POJ 1146 ID Codes
2015-07-20 17:35:08 来源: 作者: 【 】 浏览:2
Tags:ACM POJ 1146 Codes

题目大意:输入一个字符串,输出它的下一个字典序排列。

字典序算法思想:

1.从右向左寻找字符串找出第一个a[i]

2.从右向左找出第一个大于a[j]的元素a[i];

3.swap(a[i],a[j])

4.将a[i]......到a[stelen(a)]倒序

5.输出a

代码如下:

#include
  
   
#include
   
     #include 
    
      #include
     
       #include
      
        using namespace std; inline void swap(int &a,int &b){ int temp; temp=a; a=b; b=temp; } void Print(int a[],int n){ for(int i=1;i<=n;i++){ printf("%c",a[i]+'0'); if(i==n) cout<<"\n"; } return ; } int main(){ int Dire[100],q; char a[100]; int r,l,n,t; int count=0,c=1; while(scanf("%s",a)&&strcmp(a,"#")!=0){ n=strlen(a);//求出字符串的长度 for(int i=1;i<=n;i++){//初始化待排列的数字串 Dire[i]=a[i-1]-'0'; } int i=n-1; l=0; while(i>0){ if(Dire[i]
       
        l;j--){ if(Dire[j]>Dire[l]){ //从右向左找到第一个Dire[j]>Dire[i] r=j; break; //找到第一个Dire[j]时,即跳出循环 } } swap(Dire[l],Dire[r]); //交换Dire[j]>Dire[i] for(int p=l+1,q=n;p
        
         

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇leetcode - Binary Tree Maximum .. 下一篇深入浅出理解排序算法之-选择排序

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·在 Redis 中如何查看 (2025-12-26 03:19:03)
·Redis在实际应用中, (2025-12-26 03:19:01)
·Redis配置中`require (2025-12-26 03:18:58)
·Asus Armoury Crate (2025-12-26 02:52:33)
·WindowsFX (LinuxFX) (2025-12-26 02:52:30)