0
已解决
毕小曼
初级光能
初级光能
http://judge.codingtang.com/problem/1416/
题目:
题目描述 Description
对于给定的nxn方格中,每个方格放入一个不重复数,放置好nxn个数后,请输出最大主对角线方格数之和(即方格左上角到右下角方格数之和)。
输入描述 Input Description
输出为两行;
第一行输入n(不超过100),它表示nxn个方格。
第二行输入nxn个不重复的数,它表示放入nxn个方格中的数。
输出描述 Output Description
输出为一行,输出方格主对角线最大数之和。
样例输入 Sample Input
2
1 2 3 4
样例输出 Sample Output
7
怎么写?怎么写?
求求哪位大佬帮个忙
0
已采纳
李祈乐
新手光能
新手光能
对于此题,不需要特别规范矩阵的输入,而是用简单的贪心直接求得结果。我们发现,这些数既然可以随意摆放,那我们要求得和最大,就要求出特点的几个数,而这些数都摆在对角线上,而对角线上的数个数就是矩阵的边长,所以思路为:
在输入的n*n个数中,求出最大的n个数,并求得他们的和,即:
for(int i=1;i<=n*n;i++)
cin>>a[i];
sort(a+1,a+n*n+1,cmp);//排序是对于这n*n个数,cmp函数指从达到小排序
long long ans=0;//ans有可能很大,需定义为longlong
for(int i=1;i<=n;i++)
ans+=a[i];
0
0