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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python注入_Python——dll注入

    python注入_Python——dll注入dll攻击原理分析什么是dll动态链接库,是在微软Windows操作系统中实现共享函数库概念的一种方式。这些库函数的扩展名是”.dll”、”.ocx”(包含ActiveX控制的库)或者”.drv”(旧式的系统驱动程序)。为何有dll由于进程的地址空间是独立的(保护模式),当多个进程共享相同的库时,每个库都在硬盘和进程彼此的内存存放一份的话,对于早期的计算机来说,无疑是一种极大的浪费,于是win…

    2022年5月17日
    32
  • 【菜鸟学Python】案例一:汇率换算「建议收藏」

    【菜鸟学Python】案例一:汇率换算「建议收藏」汇率换算V1.0案例描述:设计一个汇率换算器程序,其功能是将外币换算成人民币,或者相反案例分析:分析问题:分析问题的计算部分;确定问题:将问题划分为输入、处理及输出部分;设计算法:计算部分

    2022年7月5日
    24
  • SystemVerilog for循环中的fork join_none「建议收藏」

    SystemVerilog for循环中的fork join_none「建议收藏」moduletest;initialbeginmain();endtaskmain();//forkjoin_anyblock1fork#5$display(“THREAD1%0t”,$time);#25$display(“THREAD2%0t”,$ti…

    2022年9月16日
    2
  • mysql大数据量分页查询优化总结

    mysql大数据量分页查询优化总结

    2022年2月19日
    54
  • linux命令mysql启动,在linux中启动mysql服务的命令

    linux命令mysql启动,在linux中启动mysql服务的命令用reboot命令重启linux服务器之后会导致mysql服务终止,也就是mysql服务没有启动。必须要重启mysql服务,否则启动jboss时会报有关数据库mysql方面的错误。命令如下:第一步:安装mysql,设置mysql的安装路径:mysql_install_db–user=mysql–datadir=/home/ems/tmp/mysql/data命令说明:上面的db-use…

    2022年5月13日
    42
  • InetAddress方法详解[通俗易懂]

    InetAddress方法详解[通俗易懂]Java提供了InetAddress类来代表IP地址,InetAddress下还有两个子类:Inet4Address、Inet6Address,它们分别代表InternetProtocolversion4(IPv4)地址和InternetProtocolversion6(IPv6)地址。

    2022年6月23日
    56

发表回复

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

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