zoukankan      html  css  js  c++  java
  • Codeforces 1256B Minimize the Permutation

    思路:

    贪心算法,每次找能移动的最小的数字往前移

    代码:

    #include<bits/stdc++.h>
    using namespace std;
    typedef pair<int,int> p;
    typedef long long ll;
    #define isOp(x,y) ((x^y)<0)
    #define m_p(a,b) make_pair(a,b)
    #define p_b(a) push_back(a)
    #define rp(i,n) for(int i=0;i<n;i++)
    #define rpn(i,n) for(int i=1;i<=n;i++)
    #define l_b(a,n,x) lower_bound(a,a+n,x)-a
    #define u_b(a,n,x) upper_bound(a,a+n,x)-a
    const int MAX_N=105;
    bool op[MAX_N];//是否移动过 
    int arr[MAX_N];
    int main(){
    	int q;
    	cin>>q;
    	rp(i,q){
    		int n;
    		cin>>n;
    		memset(arr,0,sizeof(arr));
    		memset(op,false,sizeof(op));
    		rp(j,n) cin>>arr[j];
    		rpn(j,n-1){
    			int pos=0;
    			while(arr[pos]!=j) pos++;
    			while(pos&&!op[pos-1]){
    				if(arr[pos-1]<arr[pos]) break;
    				swap(arr[pos],arr[pos-1]);
    				op[pos-1]=true;
    				pos--;
    			}
    		}
    		cout<<arr[0];
    		for(int i=1;i<n;i++) cout<<' '<<arr[i];
    		putchar('
    ');
    	}
    	return 0;
    }
    
  • 相关阅读:
    第三周学习进度总结
    第二周学习进度总结
    动手动脑04
    动手动脑03
    动手动脑02
    课堂实践总结
    课堂实践
    原码,反码和补码学习报告
    开学第一周
    第八周
  • 原文地址:https://www.cnblogs.com/yuhan-blog/p/12308904.html
Copyright © 2011-2022 走看看