首页 > 代码库 > [水]ZOJ1201
[水]ZOJ1201
给原排列 求 其前面有多少个数比他大,
给每个数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; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。