Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

为什么总是wa 百思不得其解 可不可以帮我指出错误?

Posted by caiyx at 2010-03-12 14:44:52 on Problem 1928
#include <stdio.h>
#include <math.h>
struct node
{
	int data,row,line;
};

int main()
{
	int nums,m,n,k;
	scanf("%d",&nums);
	for(int z=0;z!=nums;z++){
		scanf("%d%d%d",&m,&n,&k);
		node** a=new node*[m];
		for(int i=0;i!=m;i++){
			a[i]=new node[n];
		}
		for(int i=0;i!=m;i++)
			for(int j=0;j!=n;j++){
				scanf("%d",&a[i][j].data);
				a[i][j].row=i+1;
				a[i][j].line=j+1;
			}
		node t;
		for(int p=0;p!=m;p++){                                 //将结点从大到小排序
			for(int q=0;q!=n;q++){
				for(int i=p;i!=m;i++){
					int j;
					for((i==p?j=q:j=0);j!=n;j++){
						if(a[p][q].data<a[i][j].data){
							t=a[p][q];
							a[p][q]=a[i][j];
							a[i][j]=t;
						}  
					}
				}
			}
		}

		int sum=0,time=0,currow=a[0][0].row,curline=a[0][0].line;
		if(2*a[0][0].row+1<=k) 
		{
			time+=a[0][0].row+1;
			sum+=a[0][0].data;
		}
		for(int i=0;i!=m;i++){
			int j;
			for((i==0?j=1:j=0);j!=n;j++){
				int cha=abs(a[i][j].row-currow)+abs(a[i][j].line-curline)+1;
				if(cha+a[i][j].row+time<=k){
					time+=cha;
					sum+=a[i][j].data;
					currow=a[i][j].row;
					curline=a[i][j].line;
					if(i==m-1&&j==n-1) 
						printf("%d\n",sum);
				}
				else 
				{
					printf("%d\n",sum);
					i=m-1;
					j=n-1;
				}
			}
		}
	}
	

	return 0; 
}
					

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator