水题20pts求助

P1004 [NOIP2000 提高组] 方格取数

3WA+1TLE
by chen_z @ 2023-07-27 08:34:21


悬二关
by chen_z @ 2023-07-27 08:34:47


“水题”
by Weizhuo_Zhao @ 2023-07-27 08:35:42


@[CSQLYB](/user/654577) 两次 DFS 的时候,第一次会影响第二次,有后效性。
by w9095 @ 2023-07-27 08:50:58


@[w9095](/user/569235) 但是我是把每种可能性全都枚举出来了吧?
by chen_z @ 2023-07-27 08:56:00


@[CSQLYB](/user/654577) 你说的有道理,有没有可能是点 $B$ 有数字?
by w9095 @ 2023-07-27 09:33:46


@[w9095](/user/569235) 啊啊啊?没想到
by chen_z @ 2023-07-27 09:35:35


@[w9095](/user/569235) 好的,多A了一个点
by chen_z @ 2023-07-27 09:36:44


@[w9095](/user/569235) 这是@CSQLYB小号,谢谢您,已关注
by TBClikeZT @ 2023-07-27 09:39:38


@[CSQLYB](/user/654577) 改成这样,就只 T 一个点了: ```cpp #include<bits/stdc++.h> #define inf 0x3f3f3f3f using namespace std; const int N=30,fx[2]={0,1},fy[2]={1,0}; int ans=-1,n,x,y,z,a[N][N]; void dfs(int x,int y,int sum,bool flag){ // cout<<"dfs("<<x<<","<<y<<","<<sum<<","<<flag<<")\n"; if(x==n&&y==n){ if(flag==0)dfs(1,1,sum,1); else{ ans=max(ans,sum); return; } } for(int i=0;i<2;i++){ int nx=x+fx[i],ny=y+fy[i]; if(nx>n||ny>n)continue; int temp=a[nx][ny]; a[nx][ny]=0; dfs(nx,ny,sum+temp,flag); a[nx][ny]=temp; } } int main(){ cin>>n; while(cin>>x>>y>>z){ if(x==0&&y==0&&z==0)break; a[x][y]=z; } dfs(1,1,a[1][1],0); cout<<ans; return 0; } ```
by w9095 @ 2023-07-27 09:40:18


| 下一页