UVA 146 - ID Codes

在2084年的未来世界中,政府为了维护秩序,在公民手腕植入微型计算机,内含个人身份代码。该代码由特定数量的字母组成,并可根据字母组合变化。本文介绍了一个用于生成此类身份代码后续排列的程序实现。

It is 2084 and the year of Big Brother has finally arrived, albeit a century late. In order to exercise greater control over its citizens and thereby to counter a chronic breakdown in law and order, the Government decides on a radical measure--all citizens are to have a tiny microcomputer surgically implanted in their left wrists. This computer will contains all sorts of personal information as well as a transmitter which will allow people's movements to be logged and monitored by a central computer. (A desirable side effect of this process is that it will shorten the dole queue for plastic surgeons.)

 

An essential component of each computer will be a unique identification code, consisting of up to 50 characters drawn from the 26 lower case letters. The set of characters for any given code is chosen somewhat haphazardly. The complicated way in which the code is imprinted into the chip makes it much easier for the manufacturer to produce codes which are rearrangements of other codes than to produce new codes with a different selection of letters. Thus, once a set of letters has been chosen all possible codes derivable from it are used before changing the set.

 

For example, suppose it is decided that a code will contain exactly 3 occurrences of `a', 2 of `b' and 1 of `c', then three of the allowable 60 codes under these conditions are:

 

      abaabc
      abaacb
      ababac

These three codes are listed from top to bottom in alphabetic order. Among all codes generated with this set of characters, these codes appear consecutively in this order.

 

Write a program to assist in the issuing of these identification codes. Your program will accept a sequence of no more than 50 lower case letters (which may contain repeated characters) and print the successor code if one exists or the message `No Successor' if the given code is the last in the sequence for that set of characters.

 

Input and Output

Input will consist of a series of lines each containing a string representing a code. The entire file will be terminated by a line consisting of a single #.

 

Output will consist of one line for each code read containing the successor code or the words `No Successor'.

 

Sample input

 

abaacb
cbbaa
#

 

Sample output

 

ababac
No Successor

 

从后向前,找到不再递增的元素x。再从后向前,找到第一个比x大的元素y。

然后把x与y交换。把x+1到末尾的元素按从小到大的顺序排序。

 

 

#define RUN
#ifdef RUN

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <string>
#include <iostream>
#include <sstream>
#include <map>
#include <set>
#include <vector>
#include <list>
#include <cctype> 
#include <algorithm>
#include <utility>
#include <math.h>
#include <ctime>

using namespace std;

#define MAXN 110

char buf[MAXN];


int cmp( const void *a , const void *b )  
{
	return *(char *)a - *(char *)b;  
} 


void play(){

	int i, j;
	for(i=strlen(buf)-1; i>0; i--){
		//buf[i-1]是要被调到后面的元素
		if(buf[i-1] < buf[i]){
			//printf("%d\n", i);
			break;
		}
	}

	for(j=strlen(buf)-1; j>0; j--){
		if(buf[j] > buf[i-1]){
			break;
		}
	}

	if(i==0 || j==0){
		printf("No Successor\n");
	}
	else{
		char c = buf[i-1];
		buf[i-1] = buf[j];
		buf[j] = c;

		//从i到末尾做从小到大的排序
		//cout << "buf[i]:" << buf[i] << endl;
		//cout << "strlen(buf)-i:" << strlen(buf)-i << endl;
		qsort(&buf[i], strlen(buf)-i, sizeof(buf[0]), cmp);
		printf("%s\n", buf);

	}

}


int main(){

#ifndef ONLINE_JUDGE
	freopen("146.in", "r", stdin);
	freopen("out.out", "w", stdout);
#endif

	memset(buf, 0, sizeof(buf));

	while(scanf("%s", buf) != EOF){
		if(buf[0] == '#'){
			break;
		}

		play();

		//printf("%s\n", buf);

		memset(buf, 0, sizeof(buf));
	}

}


#endif

 

该数据集过合成方式模拟了多种发动机在运行过程中的传感器监测数据,旨在构建一个用于机械系统故障检测的基准资源,特别适用于汽车领域的诊断分析。数据按固定时间间隔采集,涵盖了发动机性能指标、异常状态以及工作模式等多维度信息。 时间戳:数据类型为日期时间,记录了每个数据点的采集时刻。序列起始于2024年12月24日10:00,并以5分钟为间隔持续生成,体现了对发动机运行状态的连续监测。 温度(摄氏度):以浮点数形式记录发动机的温度读数。其数值范围常处于60至120摄氏度之间,反映了发动机在常规工况下的典型温度区间。 转速(转/分钟):以浮点数表示发动机曲轴的旋转速度。该参数在1000至4000转/分钟的范围内随机生成,符合多数发动机在正常运转时的转速特征。 燃油效率(公里/升):浮点型变量,用于衡量发动机的燃料利用效能,即每升燃料所能支持的行驶里程。其取值范围设定在15至30公里/升之间。 振动_X、振动_Y、振动_Z:这三个浮点数列分别记录了发动机在三维空间坐标系中各轴向的振动强度。测量值标准化至0到1的标度,较高的数值常暗示存在异常振动,可能与潜在的机械故障相关。 扭矩(牛&middot;米):以浮点数表征发动机输出的旋转力矩,数值区间为50至200牛&middot;米,体现了发动机的负载能力。 功率输出(千瓦):浮点型变量,描述发动机单位时间内做功的速率,取值范围为20至100千瓦。 故障状态:整型分类变量,用于标识发动机的异常程度,共分为四个等级:0代表正常状态,1表示轻微故障,2对应中等故障,3指示严重故障。该列作为分类任务的目标变量,支持基于传感器数据预测故障等级。 运行模式:字符串类型变量,描述发动机当前的工作状态,主要包括:怠速(发动机运转但无负载)、巡航(发动机在常规负载下平稳运行)、重载(发动机承受高负荷或高压工况)。 数据集整体包含1000条记录,每条记录对应特定时刻的发动机性能快照。其中故障状态涵盖从正常到严重故障的四级分类,有助于训练模型实现故障预测与诊断。所有数据均为合成生成,旨在模拟真实的发动机性能变化与典型故障场景,所包含的温度、转速、燃油效率、振动、扭矩及功率输出等关键传感指标,均为影响发动机故障判定的重要因素。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值