1 条题解

  • 0
    @ 2025-4-7 21:38:00

    C :

    #include <stdio.h>
    #include <math.h>
    
    int main() {
    	int a[21][21], i, j, max, m, n, count = 0, k, time = 0, re1, re2, sum = 0;
    	scanf("%d%d%d", &m, &n, &time);
    	for(i = 1; i <= m; i++) {
    		for(j = 1; j <= n; j++) {
    			scanf("%d", &a[i][j]);
    			if(a[i][j] != 0)count++;
    		}
    	}
    	max = a[1][1];
    	int de1 = 1 , de2 = 1;
    	for(k = 0; k < count; k++) {
    		for(i = 1; i <= m; i++) {
    			for(j = 1; j <= n; j++) {
    				if(max < a[i][j]) {
    					max = a[i][j];
    					de1 = i;
    					de2 = j;
    				}
    			}
    		}
    		if(k == 0) {
    			re1 = 0, re2 = de2;
    		} 
    		if(time >= fabs(re1 - de1) + fabs(re2 - de2) + de1 + 1) {
    			time -= fabs(re1 - de1) + fabs(re2 - de2) + 1;
    			sum += a[de1][de2];
    		}
    		else {
    			break;
    		}
    		re1 = de1;
    		re2 = de2;
    		a[de1][de2] = 0;
    		max = 0;
    	}
    	printf("%d", sum);
    	return 0;
    }
    

    C++ :

    #include <cstdio>
    #include <cstdlib>
    #include <cmath>
    using namespace std;
    int hst[21][21];
    int max_x,max_y;
    int c_x,c_y;
    int time=0;
    int cdd=0;
    int main()
    {
    	int m,n,k;
    	scanf("%d%d%d",&m,&n,&k);
    	for(int i=1;i<=m;i++)
    	{
    		for(int j=1;j<=n;j++)
    		{
    			scanf("%d",&hst[i][j]);
    		}
    	}
    	for(int c=1;c<=1000;c++)
    	{
    		//find
    		int max=0;
    		for(int i=1;i<=m;i++)
    		{
    			for(int j=1;j<=n;j++)
    			{
    				if(hst[i][j]>max)
    				{
    					max=hst[i][j];
    					max_x=i;
    					max_y=j;
    					//hst[i][j]=0;
    				}
    			}
    		}
    		//l
    		if(c==1)
    		{
    			c_x=0;
    			c_y=max_y;
    		}
    		if(time+abs(max_x-c_x)+abs(max_y-c_y)+max_x>=k)
    		{
    			break;
    		}
    		else
    		{
    			time+=abs(max_x-c_x)+abs(max_y-c_y);
    			cdd+=hst[max_x][max_y];
    			hst[max_x][max_y]=0;
    			c_x=max_x;
    			c_y=max_y;
    			time++;
    		}
    	}
    	printf("%d",cdd);
    	//system("pause");
    	return 0;
    }
    
    

    Pascal :

    type
      ji=record
        x,y,k:longint;
      end;
    var
      i,j,l,m,n,time,o,p,q,u:longint;
      a:array[1..1000]of ji;
    procedure qsort (l,r:longint);
      var
        x0,y0,z,mid:longint;t:ji;
      begin
       x0:=l;y0:=r;
       mid:=a[(l+r)div 2].k;
       repeat
         while a[x0].k>mid do inc(x0);
         while a[y0].k<mid do dec(y0);
         if x0<=y0 then begin t:=a[x0];a[x0]:=a[y0];a[y0]:=t;inc(x0);dec(y0);end;
       until x0>y0;
       if l<y0 then qsort(l,y0);
       if x0<r then qsort(x0,r);
      end;
    
    begin
      readln(m,n,time);
      for i:=1 to m do
        for j:=1 to n do
         begin
           read(a[(i-1)*n+j].k);
           a[(i-1)*n+j].x:=i;
            a[(i-1)*n+j].y:=j;
         end;
      qsort(1,m*n);p:=0; q:=0;o:=1;
      for i:=1 to m*n do  if a[i].k>0 then  p:=p+1;
      if a[1].x*2+1>time then begin write(0);exit;end
        else begin p:=p-1;q:=q+a[1].k;time:=time-a[1].x-1;end;
      while (p>0) do
        begin
          o:=o+1;
          u:=time;
          u:=u-abs(a[o].x-a[o-1].x)-abs(a[o].y-a[o-1].y)-1-a[o].x;
          if u>=0then begin time:=u+a[o].x;q:=q+a[o].k;p:=p-1;end else break;
        end;
      writeln(q);
    end.
    
    • 1

    信息

    ID
    1777
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者