zoukankan      html  css  js  c++  java
  • hiho #1283 hiho密码 [Offer收割]编程练习赛3

    #1283 : hiho密码

    时间限制:10000ms
    单点时限:1000ms
    内存限制:256MB

    描述

    小Ho根据最近在密码学课上学习到的知识,开发出了一款hiho密码,这款密码的秘钥是这样生成的:对于一种有N个字母的语言,选择一个长度为M的单词;将组成这个单词的所有字母按照顺序不重复的写出(即遇到相同字母时跳过);然后将字母表剩下的没有使用过的字母按照顺序在其后进行排列。

    如对于有5个字母的hiho语,选择单词1, 2, 2, 4, 3(此处数字表示字母在字母表中的顺序),则秘钥为1,2,4,3,5。

    但是有一天小Ho在计算出了秘钥之后,却发现他弄丢了一开始选择的单词,于是他找到了你,希望你能够帮他找到能够生成这个秘钥的最短的单词。

    输入

    每个输入文件包含单组测试数据。

    每组测试数据的第一行为一个正整数N,意义如前文所述。

    每组测试数据的第二行为N个正整数,用来描述一个秘钥,其中第i个正整数Ai表示秘钥的第i个字符在字母表中的顺序。

    对于100%的数据,满足N<=1000,1<=Ai<=N。

    对于100%的数据,满足对于任意1<=i, j<=N,若i≠j,则Ai≠Aj。

    输出

    对于每组测试数据,输出能够生成输入给出的秘钥的最短的单词(空串不认为是单词)。由于字母表没有给出,所以对于每个字母,输出其在字母表中的顺序即可(用空格隔开)。

    样例输入
    5
    1 2 4 3 5
    
    样例输出
    1 2 4




    解题思路:
    从后往前遍历,如果a[i-1]大于a[i],则i之前(包括i-1)都为密钥;


    AC代码:
     1 #include "iostream"
     2 #define MAX 1000
     3 
     4 using namespace std; 
     5 
     6 int main()
     7 {
     8     int n;
     9     int a[MAX];
    10     cin >> n;
    11 
    12     for (int i = 0; i < n; i++)
    13         cin >> a[i];
    14 
    15     int flag = 0;
    16     for (int i = n - 1; i > 0; i--)
    17     {
    18         if (a[i - 1] > a[i])
    19         {
    20             flag = i - 1;
    21             break;
    22         }            
    23     }
    24 
    25     for (int i = 0; i <= flag; i++)
    26         cout << a[i] << " ";
    27 
    28     return 0;
    29 
    30 }
  • 相关阅读:
    PyQt作品 – PingTester – 多点Ping测试工具
    关于和技术人员交流的一二三
    Pyjamas Python Javascript Compiler, Desktop Widget Set and RIA Web Framework
    Hybrid Qt applications with PySide and Django
    pyjamas build AJAX apps in Python (like Google did for Java)
    PyQt 维基百科,自由的百科全书
    InfoQ:请问为什么仍要选择Java来处理后端的工作?
    Eric+PyQt打造完美的Python集成开发环境
    python select module select method introduce
    GUI Programming with Python: QT Edition
  • 原文地址:https://www.cnblogs.com/SeekHit/p/5517013.html
Copyright © 2011-2022 走看看