Warning: session_start(): open(/tmp/sess_58dfd0b4e078d1e8cdf626dbc3777aa9, O_RDWR) failed: No space left on device (28) in /data/wiki/inc/init.php on line 239

Warning: session_start(): Failed to read session data: files (path: ) in /data/wiki/inc/init.php on line 239

Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/auth.php on line 430

Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/actions.php on line 38

Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/lib/tpl/dokuwiki/main.php on line 12
2020-2021:teams:bigbros:jerydeak:sps1 [CVBB ACM Team]

用户工具

站点工具


2020-2021:teams:bigbros:jerydeak:sps1

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
2020-2021:teams:bigbros:jerydeak:sps1 [2020/05/17 20:19]
jerydeak
2020-2021:teams:bigbros:jerydeak:sps1 [2020/05/17 20:21] (当前版本)
jerydeak
行 84: 行 84:
  
   ***Solution:​** 解类似1,不过在递归时,取消了 x1-1==x2-1 一项。另外,需要注意的是,多维数组不要忘了哪个分量为行或者列。   ***Solution:​** 解类似1,不过在递归时,取消了 x1-1==x2-1 一项。另外,需要注意的是,多维数组不要忘了哪个分量为行或者列。
 +<hidden Code>
 +<codedoc code:​c++> ​
 +#​include<​stdio.h>​
 +#​include<​string.h>​
 +#define condition(con,​tr,​fa) ((con)?​(tr):​(fa))
 +#define max(a,b) condition(a>​b,​a,​b)
 +#define min(a,b) condition(a<​b,​a,​b)
 +#define reset(arr) memset(arr,​0,​sizeof(arr))
  
 +#define MAXN 51
 +
 +int map[MAXN][MAXN];​
 +int ans[MAXN+MAXN][MAXN][MAXN];​
 +int ansflag[MAXN+MAXN][MAXN][MAXN];​
 +int m,n;
 +
 +
 +int ansf(int step,int x1,int x2){
 + if(step==0)return map[0][0];
 + if(ansflag[step][x1][x2]>​0){
 + return ans[step][x1][x2];​
 + }
 + int y1=step-x1;
 + int y2=step-x2;
 +
 + int temp=0;
 + if(x1>0 && x2>0 && x1-1!=x2-1) temp=max(temp,​ansf(step-1,​x1-1,​x2-1));​
 + if(x1>0 && y2>0 && x1-1!=x2) temp=max(temp,​ansf(step-1,​x1-1,​x2));​
 + if(y1>0 && x2>0 && x1!=x2-1) temp=max(temp,​ansf(step-1,​x1,​x2-1));​
 + if(y1>0 && y2>0 && x1!=x2) temp=max(temp,​ansf(step-1,​x1,​x2));​
 +
 + ans[step][x1][x2]=temp+map[y1][x1]+map[y2][x2];//​*condition(x1==x2,​0,​1);​
 + ansflag[step][x1][x2]=1;​
 +
 + return ans[step][x1][x2];​
 +}
 +
 +int main(){
 + reset(map);​
 + reset(ans);​
 + reset(ansflag);​
 +
 + scanf("​%d%d",&​m,&​n);​
 +
 + int x,y,val=1;
 + for(int i=0;​i<​m;​i++)
 + for(int j=0;​j<​n;​j++)
 + scanf("​%d",&​map[i][j]);​
 + printf("​%d",​ansf(m+n-2,​n-1,​n-1));​
 +
 +
 +}
 +
 +</​codedoc>​
 +</​hidden>​
2020-2021/teams/bigbros/jerydeak/sps1.1589717944.txt.gz · 最后更改: 2020/05/17 20:19 由 jerydeak