poj1146

poj1146题目链接:http://poj.org/problem?id=1146题目大意:求一个字符串的后继字符串,即对一个字符串进行字典序排列的后一个!方法:对字符串进行从后向前进行遍历,如果直到找到后面的最大的非递增序列,然后在这个序列中找到比其前面大的最小的一个字母和其交换,再对交换后的后面的部分进行字典序排列再次进行输出即可以拉!#include#includeusingnam

大家好,又见面了,我是你们的朋友全栈君。

题目链接:http://poj.org/problem?id=1146

题目大意:求一个字符串的后继字符串,即对一个字符串进行字典序排列的后一个!

方法:对字符串进行从后向前进行遍历,如果直到找到后面的最大的非递增序列,然后在这个序列中找到比其前面大的最小的一个字母和其交换,再对交换后的后面的部分进行字典序排列再次进行输出即可以拉!

#include<iostream>
#include<string>
using namespace std;
int cmp(const void *a,const void *b)
{
	return *(char *)a-*(char *)b;
}
int main()
{
	char s[60];
	int i,j,sign,len;
	while(1)
	{
		gets(s);
		sign=0;
		len=strlen(s);
		if(len==1 && s[0]=='#')
			break;
		for(i=len-1; i>=1; i--)
			if(s[i-1]<s[i])
			{
				sign=1;
				break;
			}
		if(sign==0)
			printf("No Successor\n");
		else
		{ 
			char ma=120;
			int k;
			for(j=i; j<len; j++)
				if(s[j]<ma && s[j]>s[i-1])
				{
					ma=s[j];
					k=j;
				}
			char m=s[i-1];
			s[i-1]=s[k];
			s[k]=m;
			qsort(&s[i],len-i,sizeof(char),cmp);
			for(j=0; j<len; j++)
				printf("%c",s[j]);
             printf("\n");
		}
	}
	return 0;
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/139939.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • postgreSQL + Drupal 安装

    postgreSQL + Drupal 安装最近在做毕业论文,需要用到Linux(Fedora)下的postgreSQL+Drupal构建。就这么边学边做,碰到许多小问题,折腾了好几天,终于把网站架起来。一些问题的解决办法:1、用yum安装postgreSQL算是简单的,但是按某教程装好后直接运行servicepostgresqlstart总是不成功。后来查其他资料,发现在第一次start之前需要执行servicepost

    2022年7月20日
    11
  • 零基础学Java(13)方法参数[通俗易懂]

    零基础学Java(13)方法参数[通俗易懂]前言首先回顾一下在程序设计语言中关于如何将参数传递给方法的一些专业术语。按值调用表示方法接收的是调用者提供的值。而按引调用表示方法接收的是调用者提供的变量地址。方法可以修改按引用传递的变量的值,而不

    2022年8月7日
    7
  • openssl安装与使用

    文章目录1、OpenSSL简介2、OpenSSL安装3、加密技术介绍4、openssl命令4.1摘要命令4.2、对称加密命令4.3非对称加密命令4.3.1生成私钥4.3.2提取公钥4.3.3利用公私钥加密、解密数据4.3.4数字签名4.3.5数字证书1、OpenSSL简介OpenSSL是一个SSL协议的开源实现,采用C语言作为开发语言,具备了跨平台的能力,支持Unix/Linux、Windows、MacOS等多种平台。  OpenSSL最早的版本在1995年发布,1998年后开始由OpenS

    2022年4月6日
    57
  • mysql怎么设置远程连接_允许远程连接在哪里

    mysql怎么设置远程连接_允许远程连接在哪里MySql设置远程连接Windows与Linux同理本文使用的是MySQL8.0版本,安装在centos7中,不管是在Windows还是Linux中都是通用的,基于权限修改来达到远程连接的目的Windows与Linux同理打开终端控制面板,输入mysql-uroot-p你的Mysqlroot密码回车…

    2022年9月25日
    0
  • 解决方案:VS2017 无法打开源文件 stdio.h main.h 等头文件[通俗易懂]

    解决方案:VS2017 无法打开源文件 stdio.h main.h 等头文件[通俗易懂]问题描述:在VS2017中运行解决方案是有错误:“E1696 无法打开源文件“stdio.h” ”…原因:这种问题一般发生在该项目代码是在网上下载而来的情况,或者电脑重装新的系统等情况,导致电脑系统与该项目生成时所采用的windowsSDK不同,从而在默认的位置(已发生变化)找不到许多源文件。解决方案:1.在C++项目处(示例为“Fibonacci”),鼠标右击,弹出的菜…

    2022年6月16日
    79
  • centos7 top命令_linux tee命令

    centos7 top命令_linux tee命令top命令Linuxtop命令用于实时显示process的动态。top参数详解第一行,任务队列信息**系统当前时间:**13:52:56**系统开机后到现在的总运行时间:**up66

    2022年7月29日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号