A. Avoiding Zero
題意:
給你一個陣列,要求你找到一個排列,使得它的每個前綴和都不等于0.
思路:
可以貪心,
- 假如pre【n】=0;(那么不管怎么調整,都會有最后一個肯定為0)
- 先排序
- pre【n】>0.那么說明正數更多,把正數移到前部,
- pre【n】<0.那么說明負數更多,直接把有序的輸出即可,
AC
#include <iostream>
#include <algorithm>
#include <vector>
#define For(i,x,y) for(int i=(x); i<=(y); i++)
using namespace std;
int a[100];
void ans(int a){
if(a)cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
int main()
{
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int tt;cin>>tt;
while(tt--){
int n;cin>>n;
int sum=0;
For(i,1,n)cin>>a[i],sum+=a[i];
sort(a+1,a+1+n);
if(sum==0)ans(0);
else if(sum>0){
ans(1);
reverse(a+1,a+1+n);
For(i,1,n)cout<<a[i]<<' ';
cout<<endl;
}else {
ans(1);
For(i,1,n)cout<<a[i]<<' ';
cout<<endl;
}
}
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/170674.html
標籤:其他
