| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
请帮忙看看,或者给点测试数据吧,谢谢没有算法的方法,由于数比较少,就直接写的.....
#include<stdio.h>
#include<math.h>
int main(void)
{
int t,n,m,k,i,j,a[55][55],b[5],c[5],d[5];
int tmp1,tmp2,sum;
scanf("%d",&t);
while(t--)
{
int h=0;
sum=0;
scanf("%d %d %d",&m,&n,&k);
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
if(a[i][j]!=0)
{
b[h]=i+1;
c[h]=j+1;
d[h]=a[i][j];
h++;
}
}
}
for(j=1;j<4;j++)
{
for(i=0;i<4-j;i++)
{
if(d[i]<d[i+1])
{
tmp1=d[i];
d[i]=d[i+1];
d[i+1]=tmp1;
tmp1=b[i];
b[i]=b[i+1];
b[i+1]=tmp1;
tmp1=c[i];
c[i]=c[i+1];
c[i+1]=tmp1;
}
}
}
while(1)
{
tmp2=b[0]*2+1;
if(tmp2>k) break;
sum+=d[0];
tmp2-=b[0];
tmp2+=abs(c[0]-c[1])+abs(b[0]-b[1])+b[1]+1;
if(tmp2>k) break;
sum+=d[1];
tmp2-=b[1];
tmp2+=abs(c[1]-c[2])+abs(b[1]-b[2])+b[2]+1;
if(tmp2>k) break;
sum+=d[2];
tmp2-=b[2];
tmp2+=abs(c[2]-c[3])+abs(b[2]-b[3])+b[3]+1;
if(tmp2>k) break;
sum+=d[3];
tmp2-=b[3];
break;
}
printf("%d\n",sum);
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator