我知道我的代码很蠢但感觉思路没错?只能过两个
查看原帖
我知道我的代码很蠢但感觉思路没错?只能过两个
1116644
soyoanon楼主2023/10/31 19:52
#include<bits/stdc++.h>
using namespace std;
int main(){
	long long n,sum=0;
	cin>>n;
	int arr[n];
	for(int i=0;i<n;i++){
		cin>>arr[i];
	}
	if(n==1){//排除n=1的情况
		cout<<arr[0];
		return 0;
	}
	for(int i=0;i<n-1;i++){//一共只需执行n-1次即可
		int first=10001,second=10001,fn,sn;
		for(int j=0;j<=n-1;j++){
			if(arr[j]<first){
				first=arr[j];
				fn=j;
			}
		}
		for(int j=0;j<=n-1;j++){
			if(arr[j]<second&&fn!=j){
				second=arr[j];
				sn=j;
			}
		}//找出最小的两个数然后相加
		sum+=arr[fn]+arr[sn];
		arr[fn]=arr[fn]+arr[sn];
		arr[sn]=10001;
	}
	cout<<sum;
	return 0;
} 
2023/10/31 19:52
加载中...