L1-027 出租 (C++暴力解法)
生活随笔
收集整理的這篇文章主要介紹了
L1-027 出租 (C++暴力解法)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
L1-027 出租 (20 分)
下面是新浪微博上曾經很火的一張圖:
一時間網上一片求救聲,急問這個怎么破。其實這段代碼很簡單,index數組就是arr數組的下標,index[0]=2 對應 arr[2]=1,index[1]=0 對應 arr[0]=8,index[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};
題解:看輸入輸出就知道工作量很大,準備好幾個數組。一個數組存下標,一個數組當記錄器(arr數組避免相同的元素,相同的賦值為1,不相同的存入另一個數組)用函數模板加sort給arr的數字排序。吐了,建議用數據結構的知識解決數組真的蠢。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;ll C(int a,int b)
{return a>b;
}int main(void){
string s;
int arr[11],index[11];
ll b[11]={0};
ll k=0,m=0;
cin>>s;
int j=0,i=0;
while(s[j]!='\0')
{
if(b[s[j]-'0']==0)
{
b[s[j]-'0']=1;
arr[k]=s[j]-'0';
k++;}
j++; }sort(arr,arr+k,C);
cout << "int[] arr = new int[]{";
while(i<k){if(i==k-1)
{
cout<<arr[i];
break;
}
cout<<arr[i]<<",";
i++;}cout << "};" << endl;cout << "int[] index = new int[]{";for(int i=0;s[i]!='\0';i++){
for(int j=0;j<k;j++){
if(s[i]-'0'==arr[j]){
if(i==10)
{
cout<<j;
break;
}
cout<<j<<",";
}}
}cout << "};" << endl;return 0;}
?
總結
以上是生活随笔為你收集整理的L1-027 出租 (C++暴力解法)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 鼋头渚2021年樱花开放时间
- 下一篇: 箍牙多少钱啊?