#include<bits/stdc++.h>
using namespace std;
int n,a1,a2,b1,b2,m,ans=0x3f3f3f3f,sum,vis[101][101];
char a[101][101];
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
void f(int x,int y,int cnt)
{
if(x>n||y>m)
return ;
if(a[y]>=‘0’&&a[y]<=‘9’)
cnt+=(a[y]-‘0’);
sum=cnt;
vis[y]=1;
for(int i=0;i<4;i++)
{
int xx=x+dx[i],yy=y+dy[i];
if(xx>0&&yy>0&&xx<=n&&yy<=m&&vis[xx][yy]==0)
{
vis[xx][yy]=1;
f(xx,yy,cnt);
vis[xx][yy]=0;
}
}
vis[y]=0;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
f(1,1,0);
cout<<sum;
return 0;
}
if(xx>0&&yy>0&&xx<=n&&yy<=m&&vis[xx][yy]==0)
此处增加一个条件:c[xx][yy]!=‘#’
f(xx,yy,cnt);改为:
if(c[xx][yy]!=‘*’)f(xx,yy,cnt+c[xx][yy]-‘0’)
else f(xx,yy,cnt);
你可以这样:
#include<bits/stdc++.h>
using namespace std;
int n,a1,a2,b1,b2,m,ans=0x3f3f3f3f,sum,vis[101][101];
char a[101][101];
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
void f(int x,int y,int cnt)
{
if(x>n||y>m)
return ;
if(a[y]>=‘0’&&a[y]<=‘9’)
cnt+=(a[y]-‘0’);
sum=cnt;
vis[y]=1;
for(int i=0;i<4;i++)
{
int xx=x+dx[i],yy=y+dy[i];
if(xx>0&&yy>0&&xx<=n&&yy<=m&&vis[xx][yy]==0)
{
vis[xx][yy]=1;
f(xx,yy,cnt);
vis[xx][yy]=0;
}
}
vis[y]=0;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
f(1,1,0);
cout<<sum;
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int n,a1,a2,b1,b2,m,ans=0x3f3f3f3f,sum,vis[101][101];
char a[101][101];
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
void f(int x,int y,int cnt)
{
if(x>n||y>m)
return ;
if(a[y]>=‘0’&&a[y]<=‘9’)
cnt+=(a[y]-‘0’);
sum=cnt;
vis[y]=1;
for(int i=0;i<4;i++)
{
int xx=x+dx[i],yy=y+dy[i];
if(xx>0&&yy>0&&xx<=n&&yy<=m&&vis[xx][yy]==0&&a[xx][yy]!=‘#’)
{
vis[xx][yy]=1;
if(a[xx][yy]!=‘*’)f(xx,yy,cnt+a[xx][yy]-‘0’);
else f(xx,yy,cnt);
vis[xx][yy]=0;
}
}
vis[y]=0;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
f(1,1,0);
cout<<sum;
return 0;
} 还不对
删掉
什么鬼
就是vis[y]
下次发帖更多的发一些自己的解决思路出来而不是单纯的让同学们帮你的代码找错