社区讨论
为什么是70啊。。dalao解释一下orz。。too long lines
P2958[USACO09OCT] Papaya Jungle G参与者 3已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mi6uumko
- 此快照首次捕获于
- 2025/11/20 11:11 4 个月前
- 此快照最后确认于
- 2025/11/20 11:11 4 个月前
#include
#include
#include
using namespace std;
int sum=0,n,m;
int f[41][41];
int check(int p,int q)
{
int x[5]={0,-1,0,1,0};
int y[5]={0,0,1,0,-1};
int s=0,flag;
for(int i=1;i<=4;i++)
if(f[p+x[i]][q+y[i]]>s)
{
flag=i;s=f[p+x[i]][q+y[i]];
}
return flag;
}
void dfs(int i,int j)
{
sum+=f[i][j];f[i][j]=0;
if(i==n&&j==m)
{
printf("%d ",sum);
return;
}
else
{
if(check(i,j)==1&&i<=n&&j<=m&&i>=1&&j>=1)
dfs(i-1,j);
if(check(i,j)==2&&i<=n&&j<=m&&i>=1&&j>=1)
dfs(i,j+1);
if(check(i,j)==3&&i<=n&&j<=m&&i>=1&&j>=1)
dfs(i+1,j);
if(check(i,j)==4&&i<=n&&j<=m&&i>=1&&j>=1)
dfs(i,j-1);
}
return;
}
int main()
{
//freopen("text.in","r",stdin);
//freopen("text.out","w",stdout);
memset(f,0,sizeof(f));
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
scanf("%d ",&f[i][j]);
scanf("\n");
}
dfs(1,1);
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...