社区讨论

P2049黄题求救

学术版参与者 4已保存回复 5

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
5 条
当前快照
1 份
快照标识符
@mi86bj9z
此快照首次捕获于
2025/11/21 09:20
4 个月前
此快照最后确认于
2025/11/21 09:20
4 个月前
查看原帖
为啥这题深搜只能A两个点,其他TLE 我觉得这题深搜只能向下或者向右走 而且走的路径都没重复 为啥还会TLE
CPP
#include<bits/stdc++.h>
using namespace std;
int dx[2]={1,0};
int dy[2]={0,1};
int n,m,k,maps[150][150]; 
void dfs(int x,int y,long long sum){
	sum=sum%k;
	if(x==n&&y==m){
		ans[sum]++;
		if(ans[sum]==1) cnt++;
	}
	for(int i=0;i<=1;i++){
		int nx=x+dx[i];
		int ny=y+dy[i];
		if(nx<1||ny<1||nx>n||ny>m) continue;
		dfs(nx,ny,sum*maps[nx][ny]);
	}
}

int main(){
	cin>>n>>m>>k;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>maps[i][j];
		}
	}
	dfs(1,1,maps[1][1]);
	cout<<cnt<<endl;
	for(int i=0;i<=k;i++){
		if(ans[i]!=0) cout<<i<<" ";
	}
}

回复

5 条回复,欢迎继续交流。

正在加载回复...