• ZOJ 1201 Inversion


    原题链接

    题目大意:给一个数组{ A1,A2,…,An } ,要求生成另一个数组B1,B2,…,Bn,使得Bi表示的是在数组A中排在i前面大于i的数字的个数。题目的输入是数组A(字母P表示)或者数组B(字母I表示),要求输出对应的B或者A。

    解法:先读取首字母,如果是P,则调用permutation(),反之调用inversion()。permutation是按照正常方法寻找。inverse是先设置一个空的数组(相当于A数组),按照B数组的顺序一个个往‘A’中放。

    参考代码:

    #include<iostream>
    using namespace std;
    
    
    void permutation();
    void inversion();
    int i,j,n,a[50],b[50];
    
    int main(){
    	char c;
    	while(cin>>n && n!=0){
    		cin>>c;
    		for(i=0;i<n;i++)
    			cin>>a[i];
    		if(c=='P')
    			permutation();
    		else if(c=='I')
    			inversion();
    	}
    
    
    	return 0;
    }
    
    void permutation(){
    	for(i=0;i<n;i++){
    		b[i]=0;
    		for(j=0;j<n;j++){
    			if(a[j]>i+1)
    				b[i]++;
    			if(a[j]==i+1)
    				break;
    		}
    	}
    	for(i=0;i<n-1;i++)
    		cout<<b[i]<<' ';
    	cout<<b[n-1]<<'
    ';
    }
    
    void inversion(){
    	int num,p;
    	for(i=0;i<n;i++)
    		b[i]=0;
    	for(i=0;i<n;i++){
    		num=a[i];
    		p=0;
    		while(num>=0){
    			if(b[p]==0)
    				num--;
    			p++;
    		}
    		b[--p]=i+1;
    	}
    	for(i=0;i<n-1;i++)
    		cout<<b[i]<<' ';
    	cout<<b[n-1]<<'
    ';
    }
  • 相关阅读:
    rails时间问题
    stringify_keys 和symbolize_keys
    thritf
    Nginx负载均衡反向代理
    CentOS 7 yum 安装 Nginx
    CentOS 7安装与配置Tomcat8
    CentOS 7安装与配置JDK8
    系统数据字典模块设计
    mysql视图
    阿里云maven中央仓库
  • 原文地址:https://www.cnblogs.com/naive/p/3568804.html
Copyright © 2020-2023  润新知