【
你知道吗?在国外,如果你不修剪你的花圃,是要被贴罚单的。Xman忙于战斗,被贴了好多罚单。这一次好不容易休息了,他决定修剪一下花圃。修剪成什么样子呢?当然是X形。
Xman的花圃是一个n×n的正方形,在每个位置上都有一棵植物,对应的正整数是该植物的高度h。Xman的修剪策略是:首先把不在两条对角线上的植物全部铲除,然后在对角线上找到最矮的一株植物,把剩余的其它植物都修剪成与它等高,这样一个漂亮整齐的X型就出来了。
修剪掉的植物可以卖掉,假设每1单位高度的植物,就可以卖2美元。Xman把修剪掉的植物都卖掉,就可以弥补罚单的损失了。现在请你帮Xman计算一下总共可以卖多少钱。
【输入】
第一行是一个正整数n(3≤n<500,并且n为奇数),表示花圃的边长。接下来有n行,每行n每个正整数表示对应植物的高度h(h<50)。
【输出】
一行,一个整数,表示总共可以卖多少钱。
#include "stdio.h"
#include "math.h"
int main()
{
int n,i,j,sum=0,x1,x2,x0,a[1000][1000]={0},c,min=100,h,s;
scanf("%d",&n);
for(i=0;i<n;++i)
{
for(j=0;j<n;++j)
{
scanf("%d",&a[i][j]);
}
}
for(i=0;i<n;++i)
{
for(j=0;j<n;++j)
{
sum+=a[i][j];
}
}
for(i=0,j=0;i<n;i++,j++)
{
x1+=a[i][j];
}
for(i=n-1,j=n-1;i>=0;i--,j--)
{
x2+=a[i][j];
}
c=(n+1)/2;
x0=x1+x2-a[c][c];
for(i=0,j=0;i<n;i++,j++)
{
if(a[i][j]<min)
{
min=a[i][j];
}
else
{
break;
}
}
for(i=n-1,j=n-1;i>=0;i--,j--)
{
if(a[i][j]<min)
{
min=a[i][j];
}
else
{
break;
}
}
h=(2*n-1)*min;
s=(sum-h)*2;
printf("%d",s);
return 0;
}
我写的有点繁琐,能力有限啊