我是靠谱客的博主 土豪学姐,最近开发中收集的这篇文章主要介绍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)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复