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

Re:过了的大神可以帮我看下我的代码,为什么不行吗?

Posted by 13975 at 2015-07-17 12:21:46 on Problem 3561
In Reply To:Re:过了的大神可以帮我看下我的代码,为什么不行吗? Posted by:13975 at 2015-07-17 12:15:41
#include<stdio.h>
char data[20][20];
int flag[20][20],lineflag,n,m;
void vervisit(int j,int k)
{
	if(j-1>=0&&(data[j-1][k]=='|')&&!flag[j-1][k])
	{

		flag[j-1][k]=1;
		vervisit(j-1,k);
	}

	if(j+1<n&&(data[j+1][k]=='|')&&!flag[j+1][k])
	{

		flag[j+1][k]=1;
		vervisit(j+1,k);
	}
}
void horvisit(int j,int k)
{
	if(k+1<m&&data[j][k+1]=='-'&&!flag[j][k+1])
	{
	
		flag[j][k+1]=1;
		horvisit(j,k+1);
	}
	if(k-1>=0&&data[j][k-1]=='-'&&!flag[j][k-1])
	{

		flag[j][k-1]=1;
		horvisit(j,k-1);
	}
}
void pievisit(int j,int k)
{
	if((k+1<m)&&(j+1<n)&&(data[j+1][k+1]=='\\')&&!(flag[j+1][k+1]))
	{
	
		flag[j+1][k+1]=1;
		pievisit(j+1,k+1);
	}
	if((k-1>=0)&&(j-1>=0)&&(data[j-1][k-1]=='\\')&&!(flag[j-1][k-1]))
	{
	
		flag[j-1][k-1]=1;
		pievisit(j-1,k-1);
	}
}
void navisit(int j,int k)
{

	if((k+1<m)&&(j-1>=0)&&(data[j-1][k+1]=='/')&&!(flag[j-1][k+1]))
	{
	

		flag[j-1][k+1]=1;
		navisit(j-1,k+1);
	}
	if((k-1>=0)&&(j+1<n)&&(data[j+1][k-1]=='/')&&!(flag[j+1][k-1]))
	{
	
	
		flag[j+1][k-1]=1;
		navisit(j+1,k-1);
	}
}
int main()
{
	int t,i,j,k;
	scanf("%d",&t);
	for (i=0;i<t;i++)
	{
		lineflag=0;
	
		scanf("%d %d ",&n,&m);
		for(j=0;j<n;j++)
		{
			
			scanf("%s",data[j]);
			
		}
		for(j=0;j<n;j++)
		{
			for(k=0;k<m;k++)
			{
				if(!(flag[j][k])&&data[j][k]=='-')
				{
				
					flag[j][k]=1;
					horvisit(j,k);	//把相关点置1,下面的遍历作用相同	
					lineflag++;
					continue;
				}
				if(!(flag[j][k])&&data[j][k]=='|')
				{
					
					flag[j][k]=1;
					vervisit(j,k);
					lineflag++;
				    continue;
				}
				if(!(flag[j][k])&&data[j][k]=='\\')
				{
			
					flag[j][k]=1;
					pievisit(j,k);
					lineflag++;
					continue;
				}
				if(!(flag[j][k])&&data[j][k]=='/')
				{
				
					flag[j][k]=1;
					navisit(j,k);
					lineflag++;
					continue;
				}
			}
		}

		if(lineflag==1)
		{
			printf("CORRECT\n");
		}
		else
		{
			printf("INCORRECT\n");
		}

	}
	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