1 条题解
-
0
C++ :
#include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> using namespace std; #define N 100000+10 int dp[N][3], n; char mp[N][3],s[N]; void work(int prex, int prey, int nowx, int nowy){ if(mp[nowx][nowy] == '#') { dp[nowx][nowy] = 0; return ; } dp[nowx][nowy] = max(dp[nowx][nowy], dp[prex][prey]+mp[nowx][nowy]-'0'); } int main(){ //freopen("date.in","r+",stdin); //freopen("date.out","w+",stdout); int i, j; while(~scanf("%d",&n)){ for(i = 2; i >= 0; i--) { scanf("%s",s); for(j = 0; j < n; j++){mp[j][i] = s[j];if(mp[j][i]=='.')mp[j][i]='0';} } memset(dp, 0, sizeof dp); for(i = 1; i < n; i++) { if(mp[i-1][0]!='#') work(i-1,0, i,0); if(i-4>=0)//落地转移 { if(mp[i-4][0]!='#'&&mp[i-3][1]!='#'&&mp[i-2][2]!='#'&&mp[i-1][1]!='#') work(i-1,1, i,0); } if(mp[i-1][0]!='#')//起跳转移 work(i-1,0, i,1); if(i-3>=0)//落地转移 { if(mp[i-3][0]!='#'&&mp[i-2][1]!='#'&&mp[i-1][2]!='#') work(i-1,2, i,1); } if(i-2>=0) { if(mp[i-2][0]!='#'&&mp[i-1][1]!='#') work(i-1,1, i,2); } } int ans = 0; for(i = 0; i < 3; i++) ans = max(ans, dp[n-1][i]); printf("%d\n", ans); } return 0; }
- 1
信息
- ID
- 1501
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者