문제 :
: 다음은시나의 마이크로 블로그는 사진의 매우 불이었다입니다
어떻게 휴식 고용 한 번 온라인 도움말을위한 외침. 사실상,이 코드는 매우 간단하고, 인덱스는 인덱스 어레이 도착 어레이 인덱스는 [0] = 2 개에 대응은, 언 [2] = 1, 인덱스 [1] = 0 에 대응은, 언 [0] = (8), 지수 [2] = 3 이 ...... 쉽게 얻을 수 있도록 대응은, 언 [3] = 0, 전화 번호 18013820100이다.내용이 같은 뒤에, 전면만큼, 사실 그것은 생성 두 행 -이 질문은 모든 전화 번호로 코드를 생성하는 프로그램을 작성하도록 요구합니다.
입력 형식 :
입력 행에 11 자리 전화 번호를 부여한다.
출력 형식 :
두 줄 디지털 도착이 내림차순으로 주어져야 상기 생성 된 코드 입력들의 수, 이전.
샘플 입력 :
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};
자신의 문제의 일부가 발생 :
이 질문은하지만, 내가 생각 int 배열이 비극의 결과는 시나리오 다음 나타났다 잘 18013820100이 번호를 유지하기 시작, 어려운 일이 아니다. . . . . . . 하 ~는 (어색한) 정말 바보 같은 실수를했다! 그 당시 그는 반응하지 않았다.
이유는 무엇입니까?
int 배열은 int 형의 숫자를 저장할 수 있기 때문에, 그래서 오히려 당신이 생각 보증금으로보다 디지털로 사용 범위가 -2147483648 2147183648 어레이 스토리지입니다 int로.
내 생각 :
- 숯불의 입력 폼.
- 그런 다음 INT NUM을 입력 캐스팅.
- 이어서 디앰 퍼시스, 중복 방식이 플래그 배열로 표시되는, [12] 시작 플래그가 0 NUM 투입되는 경우 플래그가 0인지의 여부가 판정된다 NUM] 제로, 각 입력 NUM 있어요 배열 성 [12], 및 경우에 그 플래그 [NUM = 1 다음 중복 제거 효과를 얻을되도록, 문으로 동일한 경우.
- 그런 다음 내림차순으로 지정 정렬에 한 번.
- 또한 뉴 어레이 원래 번호를 유지한다.
- 루프 라인과 비교하기 위해, 행의 결과 [12]를 저장하기위한 배열의 결과를 알 수 후 후, 2 장을 사용.
다음은 플레이 코드의 내 생각이다 :
#include<bits/stdc++.h>
using namespace std;
int flag[12],st[12],nu[12];
bool cmp(int a,int b) {
return a>b;
}
int main() {
char s;
int count=0,num,tot=0;
for(int i=0; i<11; i++) {
cin>>s;
num=(int)(s-'0');
nu[tot++]=num;
if(flag[num]==0) {
st[count++]=num;
flag[num]=1;
}
}
sort(st,st+count,cmp);
int result[12],ans=0;
for(int i=0; i<tot; i++) {
for(int j=0; j<count; j++) {
if(st[j]==nu[i]) {
result[ans++]=j;
}
}
}
cout<<"int[] arr = new int[]{";
for(int i=0; i<count-1; i++) {
cout<<st[i]<<",";
}
cout<<st[count-1]<<"};";
cout<<endl;
cout<<"int[] index = new int[]{";
for(int i=0; i<ans-1; i++) {
cout<<result[i]<<",";
}
cout<<result[ans-1]<<"};";
return 0;
}
코드는 간결, 더 감사했다 없습니다!
이봐! 나는 요리 너무했다. . . .