| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1708 人关注过本帖
标题:[求助]c++如何做这道题?
只看楼主 加入收藏
cy20070818
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2020-2-16
结帖率:0
收藏
已结贴  问题点数:20 回复次数:9 
[求助]c++如何做这道题?
题目背景
一串数字也可以进行加密操作,如果我们知道加密之后的密码,我能找到原来的原码吗?

题目描述
给定1~n不同的n个正整数,我们知道,每个数之前会出现有几个比它小的数, 例如:n=5
1 4 2 5 3 数列中的5前面有三个比它小的数,1、4、2,我就对应在第四位编码为3,再如数列中的2,前面有一个比它小的数1,我们就对应第三位编码为1,当然第一位不论如何,都没有前面的数,我们就将第一位编码为0。那么整个数列的编码就是0 1 1 3 2,如果我们现在知道这个编码,想请你帮忙找到原数列是什么样子的,原数列里面的数字都是不同的,是由1~n组成的哦!

输入格式
两行,第一行一个正整数n,第二行n个整数(中间使用空格隔开)

输出格式
一行n个正整数,表示原数列

输入输出样例
输入 #1复制
5
0  1  1  3  2
输出 #1复制
1 4 2 5 3
说明/提示
数据范围: 80%的数据 n<=10 100%的数据 n<=30
搜索更多相关主题的帖子: c++ 正整数 数列 输出 编码 
2020-02-16 19:57
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
收藏
得分:7 
12345--1245--124--14--1
    int a[30]{0}, aa[30]{0}, n = 0, j = 0, jj = 0, js = 0; bool k = true;
    cout << "输入位数和数据:"; cin >> n; while (j < n)cin >> aa[j], a[j] = j++ + 1; --j;
2020-02-16 23:23
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2020-2-17 00:56编辑过]

2020-02-16 23:34
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
收藏
得分:0 
上面大概实现思路,给的数据太少,要有其他的数据来测试,程序有优化的需要。
12345
14253-01132
13524-01213
25341-01120
图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2020-2-17 13:38编辑过]

2020-02-16 23:34
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
收藏
得分:7 
用密钥推导出原密码?那要安全局干嘛啊,那不是随时可以破解的吗?
不同密码可以生成相同的密钥
14253密钥是01132
25364的密钥也是01132

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-02-17 14:08
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
收藏
得分:0 
还有1   如果你出发点只是要做题,那我告诉你这不是一道题而是一个坑
        2    如果你希望通过码源破解别人的密码?这种违法的事还是少干,因为这是借别人的手去干违法的事

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-02-17 14:24
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
收藏
得分:0 
192837465-011223344
975312468-000001357
图片附件: 游客没有浏览图片的权限,请 登录注册
2020-02-17 17:10
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
收藏
得分:0 
25374819 12 13 10 14 6 11-0 1 1 3 2 5 0 7 8 9 8 11 5 10
图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2020-2-17 17:21编辑过]

2020-02-17 17:10
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:7 
程序代码:
#include <cstdio>

int main( void )
{
    unsigned n;
    scanf( "%u%*u", &n );

    unsigned arr[30] = { 1 };
    for( unsigned i=1; i!=n; ++i )
    {
        unsigned a;
        scanf( "%u", &a );
        arr[i] = a+1;

        for( unsigned j=0; j!=i; ++j )
            if( arr[j] > a )
                ++arr[j];
    }

    for( unsigned i=0; i!=n; ++i )
        printf( "%u%c", arr[i], " \n"[i+1==n] );
}
2020-02-18 11:21
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
收藏
得分:0 
循环与运算次数多,数组使用少,初始1,且从读开始+1为第2位,循环数组遇到大于输入则+1运算数值以达到小于的次数逻辑,随着数据量的增大循环和运算次数更大。

[此贴子已经被作者于2020-2-19 04:19编辑过]

2020-02-18 18:19
快速回复:[求助]c++如何做这道题?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026784 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved