一、问题描述

下面是新浪微博上曾经很火的一张图:

一时间网上一片求救声,急问这个怎么破。其实这段代码很简单,index数组就是arr数组的下标,index[0]=2 对应 arr[2]=1index[1]=0 对应 arr[0]=8index[2]=3 对应 arr[3]=0,以此类推…… 很容易得到电话号码是18013820100

本题要求你编写一个程序,为任何一个电话号码生成这段代码 —— 事实上,只要生成最前面两行就可以了,后面内容是不变的。

输入格式:

输入在一行中给出一个由11位数字组成的手机号码。

输出格式:

为输入的号码生成代码的前两行,其中arr中的数字必须按递减顺序给出。

输入样例:

18013820100
 

输出样例:

int[] arr = new int[]{8,3,2,1,0};
int[] index = new int[]{3,0,4,3,1,0,2,4,3,4,4};

二、设计思路

(1)输入一个完整的电话号码;

(2)将电话号码的每个数字读取出来并放到一个数组a中;

(3)利用set容器可以对元素自动排序并且不会重复插入相同元素的属性,统计出来电话号码中出现的每个数字;

(4)根据题目,需要得到电话号码中每个数字在数组a中的下角标;

(5)利用for循环遍历电话号码,得到每个数字在数组a中的下角标,并将其存放在数组b中,方便后续的输出;

(6)最后根据题目要求按照一定的格式输出数组a和数组b中的元素,完成题目要求;

三、程序流程图

四、伪代码实现

五、代码实现

 1 #include<iostream>
2 using namespace std;
3 #include <algorithm>
4 #include<set>
5 int main()
6 {
7 set<int,greater<int>>s1;
8 string s;
9 cin >> s;
10 for (int i = 0; i < s.length(); i++)
11 {
12 s1.insert(s[i] - '0'); //得到电话号码中的每个数并用set容器进行排序和删除重复数据
13 }
14 cout << "int[] arr = new int[]{";
15 int a[11] = { 0 };
16 int i = 0;
17 for (set<int>::iterator it = s1.begin(); it != s1.end(); ++it)
18 {
19 a[i] = (*it);
20 i++; //将set容器中的数据放到数组中,方便后面的结果输出
21 }
22 int b[11] = { 0 };
23 int l = 0;
24 for (int m = 0; m < 11; m++)
25 {
26 for (int k = 0; k < 11; k++)
27 {
28 if (a[k] == (s[m] - '0'))
29 {
30 b[l] = k; //遍历a数组,找出电话号码每个数在a数组中对应的下标,并将其存放在b数组中,方便以后的输出
31 l++;
32 break; //注意 不加break会崩溃!!!
33 }
34 }
35 }
36 for (int i = 0; i < s1.size()-1; i++)
37 {
38 cout << a[i] << ",";
39 }
40 cout << a[s1.size() - 1] << "};" << endl; //按题目要求输出相应结果
41 cout << "int[] index = new int[]{";
42 for (int j = 0; j < 10; j++)
43 {
44 cout << b[j] << ",";
45 }
46 cout << b[10] << "};" << endl;
47 return 0;
48 }

六、总结

(1)set容器会对插入的元素进行自动排序,默认是从小到大的排序;

(2)如果想改变默认排序,变为从大到小的排序方式,可以通过set<int,greater<int>>来实现;

(3)set容器不允许插入相同的元素,multiset容器允许插入相同的元素;

天梯赛L1-027 出租的更多相关文章

  1. PTA 天梯赛 L1

    L1-002 打印沙漏 细节:就是在  (i>j&&i+j<r+1) 这个区间里才有空格,然后就是 for 循环   for(r=1; ;r+=2)  条件不满足之后还会再 ...

  2. 天梯赛L1 题解

    L1-001 Hello World (5 分) 这道超级简单的题目没有任何输入. 你只需要在一行中输出著名短句“Hello World!”就可以了. AC代码:(直接输出记性) #include & ...

  3. 2016年团体程序设计天梯赛-决赛 L1-3. 出租(20)

    下面是新浪微博上曾经很火的一张图: 一时间网上一片求救声,急问这个怎么破.其实这段代码很简单,index数组就是arr数组的下标,index[0]=2 对应 arr[2]=1,index[1]=0 对 ...

  4. 天梯赛 L1-058 6翻了

    传送门:https://pintia.cn/problem-sets/994805046380707840/problems/1111914599408664577 这道字符串题,只是天梯赛L1的题, ...

  5. PAT L1 049 天梯赛座位分配

    天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情.为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i 所学校有 M[i] 支队伍,每队 10 位 ...

  6. 『ACM C++』 PTA 天梯赛练习集L1 | 052-053

    今日刷题,水题水题 ------------------------------------------------L1-052------------------------------------ ...

  7. 『ACM C++』 PTA 天梯赛练习集L1 | 048-49

    今日刷题048-049 ------------------------------------------------L1-048---------------------------------- ...

  8. 『ACM C++』 PTA 天梯赛练习集L1 | 040-41

    近期安排 校赛3.23天梯赛3.30华工校赛 4.21省赛 5.12 ------------------------------------------------L1-040----------- ...

  9. 『ACM C++』 PTA 天梯赛练习集L1 | 001-006

    应师兄要求,在打三月底天梯赛之前要把PTA上面的练习集刷完,所以后面的时间就献给PTA啦~ 后面每天刷的题都会把答案代码贡献出来,如果有好的思路想法也会分享一下~ 欢迎大佬提供更好的高效率算法鸭~ - ...

  10. 第四届CCCC团体程序设计天梯赛 后记

    一不小心又翻车了,第二次痛失200分 1.开局7分钟A了L2-3,一看榜已经有七个大兄弟排在前面了,翻车 * 1 2.把L1-3 A了18分,留了两分准备抢顽强拼搏奖,最后五秒钟把题过了,万万没想到还 ...

随机推荐

  1. JMeter参数化(一)--CSV参数化

    一.CSV Data Set Config 1.添加配置元件-CSV Data Set Config 其中,分隔符不能是参数化的值中的符号,否则会被截断. 2.调用 3.循环读取文件中数据 假设数据内 ...

  2. IT工具知识-12:RTL8832AU网卡在WIN10更新KB5015807后出现无法正常连接的一种解决方法

    系统配置 硬件配置 使用网卡为Fenvi的FU-AX1800 USB外置网卡(官网驱动同AX1800P) 问题描述 在win10自动更新了KB5015807出现了wifi开机无法自动连接,wifi图标 ...

  3. 【原创】freetype android交叉编译

    项目中Opencv需要显示中文,由于本身并不支持,所以需要借助第三方的库freetype来实现.这个库虽然android本身也有使用,但并没有暴露接口给外部使用. freetype官网 方式1 脚本编 ...

  4. JSTl_概述和JSTL_常用便签if

    概念: JavaServer Pages Tag Library JSP 标准标签片*是由 Apache 组织提俱的开源的免费的 jsp 标签 <标签> 作用:用于简化和替换 jsp 页面 ...

  5. 腾讯云等Linux环境下Redis安装配置

    1.下载redis解压安装命令教程 https://www.cnblogs.com/hunanzp/p/12304622.html 2.配置远程连接 修改bind 127.0.0.0  为 bind ...

  6. Java题目集 函数

    6-1 汽车类 (20 分)   编写汽车类,其功能有启动(start),停止(stop),加速(speedup)和减速(slowDown),启动和停止可以改变汽车的状态(on/off),初始时状态为 ...

  7. 【picoCTF]cookies write up

    顾名思义,这一挑战涉及对cookie的简单操作.登录页面会显示一个搜索框,其中包含一个输入字段,用于检查您为其提供的 Cookie 类型. 点击链接,页面如下: 随便在框里输入内容,显示如下: 输出返 ...

  8. lua脚本概述

    1.lua脚本非常简单,轻量级,易于c/c++调用 2. 协程 是什么,与线程有啥区别 ??

  9. NTP同步时间

    什么是NTPNTP:Network Time Protocol(网络时间协议) ️ NTP 是用于同步网络中计算机时间的协议.它的用途是把计算机的时钟同步到世界协调时UTC. UTC:Universa ...

  10. 对使用网站模板编写自己的jsp页面的收获

    收获与问题 先感叹一句模板的强大,模板只要按照我的上一篇博客的步骤进行修改,我们就能拥有一个自己写好看许多的界面了. 我目前套用模板还不是很熟练,套用的速度还需要加快,不过目前的我,已经掌握了基本要领 ...