R7-3 出租 (20 分)

简介: R7-3 出租 (20 分)

R7-3 出租 (20 分)


下面是曾经很火的一张图:


af1f6678a0381cc627fa4d8bf4e8dcb8.jpg

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


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


输入格式:


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


输出格式:


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


输入样例:


18013820100


输出样例:


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


有一个测试点没过,懒得找那里错了就重新写了下,代码在后面


#include<iostream>
using namespace std;
int a[10],b[10],cnt,flag;
int main(){
    string s;cin>>s;
    for(int i=0;i<s.size();i++)a[s[i]-'0']++;
    printf("int[] arr = new int[]{");
    for(int i=9;i>=0;i--){
        if(flag)cout<<',';
        if(a[i]){
            cout<<i,flag=1;
            b[cnt++]=i;
        }
        else {
            flag=0;
            continue;
        }
    }cout<<"};"<<endl<<"int[] index = new int[]{",flag=0;
    for(int i=0;i<s.size();i++){
        for(int j=0;j<cnt;j++){
            if((s[i]-'0')==b[j]){
                if(flag)cout<<',';
                cout<<j,flag=1;
            }
        }
    }cout<<"};";
    return 0;
}


重温了c,c++的一些列头文件及其函数用法做得


#include<iostream>
#include<algorithm>
#include<cstring>
#include<map>
using namespace std;
map<int,int>mp;
int a[10],cnt,flag;
int main()
{
    char s[12];
    cin.getline(s,12);//注意这里空间设置大一个,用于存储'\0'
//     cout<<endl<<"s = "<<strlen(s)<<endl;
    for(int i=0;i<strlen(s);i++)
    {
        mp[s[i]-'0']++;
    }
    for(map<int,int>::iterator it=mp.begin();it!=mp.end();it++)
    {
        a[cnt++]=it->first;
    }
    printf("int[] arr = new int[]{");
    reverse(a,a+cnt);
    for(int i=0;i<cnt;i++)
    {
        if(i!=0)
        {
            printf(",");
        }
        cout<<a[i];
    }
    printf("};\nint[] index = new int[]{");
//     cout<<endl<<"s = "<<strlen(s)<<endl;
    for(int i=0;i<strlen(s);i++)
    {
        for(int j=0;j<cnt;j++)
        {
            if(s[i]-'0'==a[j])
            {
                if(flag)
                {
                    printf(",");
                }
                printf("%d",j);
                flag=1;
            }
        }
    }
    printf("};\n");
    return 0;
}
目录
相关文章
|
13天前
1053 住房空置率 (20 分)
1053 住房空置率 (20 分)
L2-028 秀恩爱分得快 (25 分)
L2-028 秀恩爱分得快 (25 分)
135 0
|
11月前
循环结构-慈善募捐——在全院10000学生中,征集慈善募捐,当总数达到10万元时就结束,统计此时捐款的人数,以及平均每人捐款的数目。
循环结构-慈善募捐——在全院10000学生中,征集慈善募捐,当总数达到10万元时就结束,统计此时捐款的人数,以及平均每人捐款的数目。
204 0
|
算法
算法题(出租)
算法题(出租)
算法题(出租)
L1-027 出租 (20 分)
L1-027 出租 (20 分)
94 0
L1-027 出租 (20 分)
|
Java 测试技术
Java月饼月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需 求量,请你计算可以获得的最大收益是多少。注意:销售时允许取出一
Java月饼月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需 求量,请你计算可以获得的最大收益是多少。注意:销售时允许取出一
125 0
|
机器学习/深度学习
某销售公司在年末的时候会向员工发放红包,发放的红包金额共有5种,获取的条件各不相同:   1) 五颗星红包,每人8000元,平均月绩效大于80件商品(>80),并且在本年度满勤; 2) 四颗星红包,每
某销售公司在年末的时候会向员工发放红包,发放的红包金额共有5种,获取的条件各不相同:   1) 五颗星红包,每人8000元,平均月绩效大于80件商品(>80),并且在本年度满勤; 2) 四颗星红包,每
210 0
L2-007 家庭房产 (25 分)(并查集)
L2-007 家庭房产 (25 分)(并查集)
117 0
h0131. 钞票 (15 分)
h0131. 钞票 (15 分)
84 0
L1-051 打折 (5 分)
L1-051 打折 (5 分)
224 0