给原排列 求 其前面有多少个数比他大。
给每一个数1...2..n前面有多少个数比他大,求原序列
第一个直接统计
第二个从1開始找出第inv【i】+1个空位置放进去就好
printf里的format 原来能够用if表达式 - -
#include <bits/stdc++.h> using namespace std; int n; void Gao() { int a[100],b[100]={0}; char ch; getchar(); ch=getchar(); if (ch=='P') { for (int i=0;i<n;i++) scanf("%d",a+i); for (int i=0;i<n;i++) for (int j=0;j<i;j++) if (a[i]<a[j]) b[a[i]]++; for (int i=0;i<n;i++) printf(i==0?"%d":" %d",b[i+1]); cout<<endl; } else { for (int i=0;i<n;i++) scanf("%d",a+i); for (int i=0;i<n;i++) { int need=0; for(int j=0;j<n;j++) { if (b[j]==0) need++; if ((need==(a[i]+1))&&(b[j]==0)) { b[j]=i+1; break; } } } for (int i=0;i<n;i++) printf(i==0?"%d":" %d",b[i]); cout<<endl; } } int main() { // freopen("a.in","r",stdin); while (cin>>n && n) Gao(); return 0; }