我是靠谱客的博主 土豪学姐,最近开发中收集的这篇文章主要介绍Codeforces Round #744 (Div. 3) (Shifting Sort),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目给你一个数组   (让你排序,并且排序的次数不能能超过他给你的n次数)

写法就是拿一个已经排好的  和没有排好的  这样就能计算最少的次数

#include"bits/stdc++.h"
 
using namespace std;
const int N = 55;
int s[N],v[N];
int t,n;
int main()
{
	cin >> t;
	while(t--)
	{
		memset(s,0,sizeof s);        //  一个原有的  一个排过序的
		memset(v,0,sizeof v);        
		cin >> n;
		for(int i=1 ; i<=n ;i ++){
			cin >> s[i];
			v[i] = s[i];
		}	
		sort(v+1,v+1+n);
		
		int ans = 0;
		vector<int>ve;
	 	for(int i=1 ;i <=n ; i++){
	 		if(v[i] != s[i]){
	 			ans++;
	 			int p ;                
	 			vector<int>lp;        // 存储每次排序好的位置  给原有的数组更新
	 			for(int j=i;j<=n;j++){
	 				if(v[i] == s[j]){
	 					p=j;
					 	ve.push_back(i);
	 					ve.push_back(j);
	 					ve.push_back(j-i);
	 					break;
					}else{
					 	lp.push_back(s[j]);
					}
				}                            
				int bns = lp.size();           
				s[i] = lp[bns-1];
				int cntl=0;
				for(int j=i+1;j<=p;j++){
					s[j] = lp[cntl++];
				}
			}
		}
	 	cout << ans << endl;
	 	int lo = 0;
		for(int i = 0 ; i < ve.size() ; i++){
	 		cout << ve[i] << " ";
	 		lo++;
	 		if(lo%3==0) cout << endl;
		}
	}
	
	
	return 0;
}

最后

以上就是土豪学姐为你收集整理的Codeforces Round #744 (Div. 3) (Shifting Sort)的全部内容,希望文章能够帮你解决Codeforces Round #744 (Div. 3) (Shifting Sort)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部