WA+TLE(30分->20分)
查看原帖
WA+TLE(30分->20分)
658786
STUDENT00楼主2022/9/5 18:42

只要告诉我为什么WA即可

#include<bits/stdc++.h>
#define mod 10007
using namespace std;
int n,m,ans;
char c[250][250];
void dfs(int p){
	if(p>n*m){
		ans++;
		if(ans>=mod) ans-=mod;
		return;
	}
	int x=(p-1)/m+1,y=(p-1)%m+1;
	if(c[x][y]=='.'){
		c[x][y]='0';
		dfs(p+1);
		c[x][y]='1';
		if(c[x-1][y]!='1'&&c[x][y-1]!='1') dfs(p+1);
		c[x][y]='.';
	}else dfs(p+1);
}
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++) scanf("%s",c[i]+1);
	dfs(1); 
	printf("%d",ans);
	return 0;
}

还有我的动规代码过不了样例:

#include<bits/stdc++.h>
#define mod 10007
using namespace std;
int n,m,dp[250][250][2];
char c[250][250];
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++) scanf("%s",c[i]+1);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			for(int k=0;k<2;k++){
				if(c[i][j]=='0'&&k||c[i][j]=='1'&&!k) dp[i][j][k]=0;
				else{
					if(k) dp[i][j][k]=dp[i-1][j][0]+dp[i][j-1][0];
					else dp[i][j][k]=dp[i-1][j][0]+dp[i-1][j][1]+dp[i][j-1][0]+dp[i][j-1][1];
					if(c[i][j]=='0'||c[i][j]=='1') dp[i][j][k]++;
					dp[i][j][k]%=mod;
				}
			}
		}
	}
	printf("%d",(dp[n][m][0]+dp[n][m][1])%mod);
	return 0;
}
2022/9/5 18:42
加载中...