又双叒叕WA了5个点
查看原帖
又双叒叕WA了5个点
920234
froth_reciprocal楼主2023/10/16 19:39

请大佬们不要嘲笑本垃圾

一共WA了5个点,#2 #5 #7 #8 #10

下载了一个数据(#2):

Input:

5 5 5 
1 2 5 5
2 1
2 2
2 3
2 4
3 4

Output:

10

CodeCode:(如果觉得看得不顺眼,可以看下面这那个)

#include<iostream>
#include<cstring>
using namespace std;
const int N=15; 
int n,m,t,sx,sy,fx,fy,a[N][1],ans=0;
bool vis[N][N];//表记数组 
void dfs(int x,int y){//x为纵轴,y为横轴 
	if(x==fx&&y==fy){ans++;return;}
	else{
		vis[x][y]=0;//把当前点标记成走过了 
		if(x+1>=1&&x+1<=m&&vis[x+1][y]!=0)/*可以走且未超边界*/{dfs(x+1,y);/*搜*/vis[x+1][y]==1;/*回溯*/}
		if(y+1>=1&&y+1<=n&&vis[x][y+1]!=0)/*可以走且未超边界*/{dfs(x,y+1);/*搜*/vis[x][y+1]==1;/*回溯*/}
		if(x-1>=1&&x-1<=m&&vis[x-1][y]!=0)/*可以走且未超边界*/{dfs(x-1,y);/*搜*/vis[x-1][y]==1;/*回溯*/}
		if(y-1>=1&&y-1<=m&&vis[x][y-1]!=0)/*可以走且未超边界*/{dfs(x,y-1);/*搜*/vis[x][y-1]==1;/*回溯*/}
	}
}
int main(){
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	memset(vis,1,sizeof(vis));//标记初始化为true 
	cin>>n>>m>>t;//n为长,m为宽 
	cin>>sx>>sy>>fx>>fy;
	for(int i=1;i<=t;i++)cin>>a[i][0]>>a[i][1];//输入 
	for(int i=1;i<=t;i++)vis[a[i][0]][a[i][1]]=false;//把不能走的标记为false 
	dfs(sx,sy);//深搜 
	cout<<ans<<endl;
	return 0;
}

这个格式化了(DEV-C++的Allman括号风格):

#include<iostream>
#include<cstring>
using namespace std;
const int N=15;
int n,m,t,sx,sy,fx,fy,a[N][1],ans=0;
bool vis[N][N];//表记数组
void dfs(int x,int y) //x为纵轴,y为横轴
{
	if(x==fx&&y==fy)
	{
		ans++;
		return;
	}
	else
	{
		vis[x][y]=0;//把当前点标记成走过了
		if(x+1>=1&&x+1<=m&&vis[x+1][y]!=0)/*可以走且未超边界*/
		{
			dfs(x+1,y);/*搜*/vis[x+1][y]==1;/*回溯*/
		}
		if(y+1>=1&&y+1<=n&&vis[x][y+1]!=0)/*可以走且未超边界*/
		{
			dfs(x,y+1);/*搜*/vis[x][y+1]==1;/*回溯*/
		}
		if(x-1>=1&&x-1<=m&&vis[x-1][y]!=0)/*可以走且未超边界*/
		{
			dfs(x-1,y);/*搜*/vis[x-1][y]==1;/*回溯*/
		}
		if(y-1>=1&&y-1<=m&&vis[x][y-1]!=0)/*可以走且未超边界*/
		{
			dfs(x,y-1);/*搜*/vis[x][y-1]==1;/*回溯*/
		}
	}
}
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	memset(vis,1,sizeof(vis));//标记初始化为true
	cin>>n>>m>>t;//n为长,m为宽
	cin>>sx>>sy>>fx>>fy;
	for(int i=1; i<=t; i++)cin>>a[i][0]>>a[i][1]; //输入
	for(int i=1; i<=t; i++)vis[a[i][0]][a[i][1]]=false; //把不能走的标记为false
	dfs(sx,sy);//深搜
	cout<<ans<<endl;
	return 0;
}

谢谢大佬们讲解

2023/10/16 19:39
加载中...