问题标题: 酷町堂1416摆方格怎么做?(87)

0
0
已解决
李牧之
李牧之
新手光能
新手光能
#include<iostream>
#include<algorithm>
using namespace std;
int a[10001];
int main(){
    int n,ans=0;
    cin>>n;
    if (n==0) {
        cout<<'0';
    }
    else{
        for(int i=0;i<n*n;i++) cin>>a[i];
        sort(a,a+n*n);
        for(int i=n*n-1;i>n*n-n-1;i--) ans+=a[i];
        cout<<ans<<endl;
    }
    return 0;
} 

大佬教我,求思路!!谢谢!!


0
已采纳
被禁言 贾敬波
贾敬波
高级守护
高级守护

这个其实就是一个排序的题目啊,需要输出前n个大的数的和嘛,先给数组排个序,然后输出a[0]到a[n-1]就行了啊。

以下是选择排序核心代码

for(int i=0;i<n-1;i++)
for(int j=i+1;j<n;j++)
{
	if(a[i]<a[j])
	{
		t=a[i];
		a[i]=a[j];
		a[j]=t;
	}
}

 

贾敬波在2018-01-10 17:45:16追加了内容

补充一下,输出a[0]-a[n-1]的和

贾敬波在2018-01-10 17:55:10追加了内容

还有一点要提示的,就是注意数据类型,如果数据过大应使用long long

0
朱宗晔
朱宗晔
初级光能
初级光能

核心部分 

    for(i=i;i<n*n;i++) cin>>a[i];
    for(int i=0;i<n*n;i++)
    for(int j=1;j<n*n;j++)
    if(a[j]<a[j-1])
    {
        temp=a[j];
        a[j]=a[j-1];
        a[j-1]=temp;
    }
    for(i=n*n-n;i<n*n;i++) sum+=a[i];

小于等于n * n - n 才对

0
我要回答