⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1019.cpp

📁 zju_acm部分代码!都是自己做 有些事基本题目!题目还可以
💻 CPP
字号:
#include<iostream>
#include <cstdio>
using namespace std;
char position[1000];
int start[1000] , end[1000] , n , m ;
int dfs(int step,int x,int y,int a[105][105],int nn)
{
	int  game , flag=0 , i,j,sign;
	if( nn == step) return 1;
for( i = start[nn] ; i <= end[nn] ; i ++ )  
{
	sign = 0;
  switch( position[nn] )
  {
  case 'U':
	  {
		 if( a[x-i][y] == 1 || x-i < 1)
		 {  game = 0;flag = 1 ;}
		 else 
		 {
			 for( j = x-i  ; j < x ; j++)
				if(a[j][y] == 1)
				{
					game=0 ; 
					flag=1; 
					sign = 1;
					break;
				}
				if( sign == 0)game = dfs( step,x-i,y,a,nn+1);

			 }
	   }
			 break;
  case 'D':
	  {
		if(a[x+i][y]==1||x+i>n)
		{ game=0 ; flag=1;}
		
		
		else
		{
			for( j = x+1 ; j < x+i ; j++)
				if(a[j][y] == 1)
				{
					game=0 ; 
					flag=1; 
					sign = 1;
					break;
				}
				
		
				if(sign == 0) game=dfs(step,x+i,y,a,nn+1);
		}
      }
	  break;
  case 'L':
	  {
		if(a[x][y-i] == 1 || y-i<1)
			{game=0;flag=1;}

		else
		{
				for( j = y-i ; j < y ; j++)
				if(a[x][j] == 1)
				{
					game=0 ; 
					flag=1; 
					sign = 1;
					break;
				}
				
		
			if(sign == 0 )	game = dfs(step,x,y-i,a,nn+1);
		}
      }
	  break;
  case 'R':
	  {
		if(a[x][y+i]==1||y+i>m){game=0;flag=1;}
		 else  
		 {
			 for( j = y ; j < y+i ; j++)
				if(a[x][j] == 1)
				{
					game=0 ; 
					flag=1; 
					sign = 1;
					break;
				}
				if(sign == 0) game=dfs(step,x,y+i,a,nn+1);
		 }
      }
	  break;

  }
  if(game==1||flag==1)
	  break;
}
return game;
}
int main()
{
//	FILE *fp;
//	fp = fopen("11.txt","r");
	int num;
//	fscanf(fp,"%d",&num);
	scanf("%d",&num);
while(num--)
{
    int i,j;
	int a[105][105]={0};
    int  number=0,step;

//	fscanf(fp,"%d%d",&n,&m);
	scanf("%d%d",&n,&m);

  for(i=1;i<=n;i++)
	for(j=1;j<=m;j++)
  // fscanf(fp,"%d",&a[i][j]);
		 scanf("%d",&a[i][j]);
   
  i=0;
	while(1)
	{
		//fscanf(fp,"%d %d",&start[i],&end[i]);
		scanf("%d%d",&start[i],&end[i]);
		getchar();
		if( start[i]== 0 && end[i] == 0 )
			  break;
		//fscanf(fp," %c",&position[i]);
		scanf("%c",&position[i]);
	  
	   i++;
	}

  step=i;

  for(i=1;i<=n;i++)
	for(j=1;j<=m;j++)
	 if(a[i][j] != 1)
		if(dfs(step,i,j,a,0)==1)
			  number++;
	printf("%d\n",number);
}
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -