`
hellobin
  • 浏览: 65861 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

UVA 146 - ID Codes

    博客分类:
  • UVA
 
阅读更多

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

 

分享到:
评论

相关推荐

    Error-Correcting Codes - Revised, 2nd Edition.djvu

    Error-Correcting Codes, by Professor Peterson, was originally published in 1961. Now, with E. J. Weldon, Jr., as his coauthor, Professor Peterson has extensively rewritten his material. The book ...

    github-recovery-codes.txt

    github-recovery-codes.txt

    Variable-length Codes for Data Compression.pdf

    《Variable-length Codes for Data Compression》是一本关于数据压缩领域中变长编码技术的专业书籍。本书由David Salomon教授撰写,详细介绍了各种变长编码算法及其在实际数据压缩场景中的应用。 #### 什么是变长...

    Reed-Solomon Codes and Their Applications,(里德所罗门码及应用)

    一本详细讲述Reed-Solomon codes的书,包括其应用!

    a class of optimal minimum odd-weight-column SEC-DED Codes

    单bit错误校正,多bit错误检测的ECC算法论文;比传统的Hamming更加简洁、高效。

    Space-Time Codes and MIMO Systems 书和代码 纯英文版

    This book is intended to introduce space-time coding and multiantenna systems. The endeavor is to impart a working knowledge of the subject not just for students and researchers but for the entire ...

    Fundamentals of Error-Correcting Codes - W. Cary Huffman-book-Vera Pless.pdf

    Fundamentals of Error-Correcting Codes Fundamentals of Error-Correcting Codes is an in-depth introduction to coding theory from both an engineering and mathematical viewpoint. As well as covering ...

    Fundamentals of Error-Correcting Codes

    错误纠正编码(Error-Correcting Codes,ECC)是通信和数据存储领域中至关重要的技术,旨在检测并修复数据传输或存储过程中可能出现的错误。《Fundamentals of Error-Correcting Codes》这本书由W. Cary Huffman撰写...

    Low-Density Parity-Check Codes

    ### 低密度奇偶校验码(Low-Density Parity-Check Codes,简称LDPC码) #### 引言 在1963年,罗伯特·G·加勒格在其博士论文中首次提出了低密度奇偶校验码的概念。这篇论文不仅为通信工程领域带来了重大的突破,...

    The.Theory.of.Error-Correcting.Codes

    - **克尔多克码(Kerdock Codes)**与**预备拉塔码(Preparata Codes)**:这两类码具有良好的非线性性质,适合于某些特定的应用场景。 - **自对偶码(Self-Dual Codes)**:这类码具有独特的数学性质,在编码理论中占有...

    Turbo-like Codes, Design for High Speed Decoding

    书名:Turbo-like Codes, Design for High Speed Decoding 作者:Aliazam Abbasfar 本书供学习编码尤其是想了解turbo codes的专业人士参考。

    Space-Time Codes and MIMO Systems

    ### 时空编码(Space-Time Codes) 时空编码是一种在多输入多输出(MIMO)通信系统中使用的信号处理技术。它通过在时间和空间上对信号进行编码,提高了无线通信系统的可靠性和数据传输速率。时空编码利用了多个发射天线...

    Syndrome-Trellis Codes(STC编码)C++和Matlab实现代码

    信息隐藏领域STC校验网格码源代码(STC工具箱),实现SPIE2010论文Tomas Filler, Jan Judas, Jessica Fridrich."Minimizing Embedding Impact in Steganography using Trellis-Coded Quantization",包含Windows/...

    Fundamentals Of Error-Correcting Codes

    错误校正码(Error-Correcting Codes, ECC)是一种在数据传输或存储过程中用于检测和纠正错误的编码方法。其核心目的是提高通信系统的可靠性,减少因传输过程中的噪声或干扰而引起的错误。 #### 二、编码理论的发展...

    Design of low-density parity-check codes for modulation and detection.pdf

    本文探讨了低密度奇偶校验码(Low-Density Parity-Check Codes, LDPC)在调制与检测中的应用。LDPC码作为一种强大的信道编码技术,在噪声信道中能够接近信道容量的性能而被广泛研究和应用。文章主要讨论了两个方面的...

    A Course In Error-Correcting Codes

    - **卷积码(Convolutional codes)**:适用于连续数据流的编码方案,通过在输入序列上滑动窗口进行编码,能够在有限的状态机中实现。 - **乘积码(Product codes)**:通过组合两个简单的线性码得到的一种复杂度较低但...

    A method for the construction of minimum-redundancy codes

    最小冗余码(Minimum-redundancy Codes),通常指的是Huffman编码,是一种统计编码方法,由David A. Huffman在1952年提出。其核心思想是通过分析数据源的统计特性,为不同符号分配不同长度的编码,使得高频出现的...

    实验四-代码-UAV-AmBC-TWC-simulation codes.zip

    实验四-代码-UAV-AmBC-TWC-simulation codes.zip

    space-time--codes-3.rar_Time

    标题"space-time--codes-3.rar_Time"暗示了这是一个关于空间时间编码的资料集,可能是论文、教程或者代码库,而"Time"标签进一步强调了时间因素在其中的重要性。 空间时间编码的基本思想是利用多个天线同时发送信号...

Global site tag (gtag.js) - Google Analytics