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


相关推荐

  • 光猫不改桥接外网能访问吗_光猫桥接的利弊

    光猫不改桥接外网能访问吗_光猫桥接的利弊因为群晖需要外网访问,将自购的路由器改为拨号上网,光猫设置为桥接模式。但这种情况下,因为路由的网段(我的是192.168.3.x)和光猫的网段(电信,默认192.168.1.x)不同,此时不能通过192.168.1.1网址来连接光猫,网上也有将光猫称作副路由。解决方法:1、在光猫中插入一根网线,通过有线的方式连接到电脑。现在的笔记本很多都不带RJ45网口,还需要另外准备转接头和网线。2、临时将路由的上网方式变更为自动获取,然后就可以连接192.168.1.1。这种方法的缺点是

    2022年10月8日
    1
  • win10锁定计算机命令,锁定Windows 10 PC的10种方法

    win10锁定计算机命令,锁定Windows 10 PC的10种方法离开时,锁定Windows10PC是保护计算机安全的最佳方法。这不会退出或中断任何正在运行的应用程序,您必须输入PIN或密码才能通过锁定屏幕。您可以通过以下10种方式锁定计算机。在“开始”菜单中锁定计算机毫不奇怪,“开始”菜单提供了用于锁定PC的选项。只需单击“开始”按钮(Windows图标),选择您的帐户名,然后单击“锁定”。使用Windows键几乎每台WindowsPC的键盘上都有Win…

    2022年7月21日
    11
  • 模型调参:分步骤的提升模型的精度

    模型调参:分步骤的提升模型的精度

    2021年11月21日
    45
  • android打开相册选择图片_安卓音频

    android打开相册选择图片_安卓音频Buttonclickevent:Intentintent=newIntent(Intent.ACTION_PICK,android.provider.MediaStore.Video.Media.EXTERNAL_CONTENT_URI);startActivityForResult(intent,REQUEST_VIDEO_CODE);打开方式有两种ac

    2022年9月16日
    3
  • try catch 对性能影响

    try catch 对性能影响引言之前一直没有去研究trycatch的内部机制,只是一直停留在了感觉上,正好这周五开会交流学习的时候,有人提出了相关的问题。借着周末,正好研究一番。讨论的问题当时讨论的是这样的问题:比较下面两种trycatch写法,哪一种性能更好。for(inti=0;i<1000000;i++){try{Ma

    2022年6月16日
    56
  • OpenCV——Canny边缘检测(cv2.Canny())

    OpenCV——Canny边缘检测(cv2.Canny())Canny边缘检测Canny边缘检测是一种使用多级边缘检测算法检测边缘的方法。1986年,JohnF.Canny发表了著名的论文AComputationalApproachtoEdgeDetection,在该论文中详述了如何进行边缘检测。Canny()边缘检测步骤Canny边缘检测分为如下几个步骤:步骤1:去噪。噪声会影响边缘检测的准确性,因此首先要将噪声过滤掉。步骤2:计算梯度的幅度与方向。步骤3:非极大值抑制,即适当地让边缘“变瘦”。步骤4:确定边缘。使

    2022年5月25日
    42

发表回复

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

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