多题目

(排列)给定一个1~n的排列A,你需要给出一个1~n的排列B,使得排列B的字典值最小。输出字典序最小的排列B。

输入两行,第一行一个正整数 n,

第二行n个整数表示排列 A。

提示:将问题分为n是奇数和n是偶数考虑,贪心处理。

试补全程序。

#include<bits/stdc++.h>

using namespace std;

int a[1000010];

int B[1000010];

int c[1000010];int main(){

int n;scanf("号d",&n);

for(int i=l;i<=n;i++)scanf("名d",&A[i]);

if( ① ){

int p1-0;intp2- ②;for(int i=l;i<=n;i++){

if (A[i]>n/2){B[i]=++p1;}else{B[i]=++p2;

}else{

int p1-0;int p2=n/2;

for(int i=l;i<=n;i++){

if(A[i]>_③ ){B[i]=++p1;}else{B[i]-++p2;

p1-0;p2-n/2+1;for(int i=l;i<=n;i++){if(A[i]>- ④ ){C[i]-++p1;

}else{c[i]-++p2;

int flag=0;

for(int i=l;i<=n;i++){

if(B[i]<C[i]){flag=l;break; }if(B[i]>C[i]){flag=2;break; }

⑤)swap(B,C);if(flag!=

for(int i=l;i<n;i++)printf("d ",B[i]);

printf("gd\n",Bln]);

return 0;


第1题 单选

1处应填

A.

n%2==0

B.

n%2==1

C.

n==1

D.

n==2

第2题 单选

2处应填

A.

pI

B.

n/2-1

C.

n/2

D.

n/2+1

第3题 单选

3处应填

A.

pI

B.

n/2-1

C.

n/2

D.

n/2+1

第4题 单选

4处应填

A.

pI

B.

n/2-1

C.

n/2

D.

w/2+1

第5题 单选

5处应填

A.

0

B.

1

C.

2

D.

3

发表评论

登录 后再回复