栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 2685 UNISON

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 2685 UNISON

#include <iostream>#include <stdio.h>#include <string.h>#include <algorithm>#include <stdlib.h>using namespace std;int dp[210][210][210];int dat[210][3];char str[210];int a,b,c;int val(int x,int y,int z){ int t = 0; if(x == 0) t++;if(y == 0) t++;if(z == 0) t++; if(t >= 2) return 0; if(x == y && x == z) return 3; if(x == y && z == 0) return 1; if(x == z && y == 0) return 1; if(y == z && x == 0) return 1; return 0;}int dfs(int aa,int bb,int cc){ if(!(aa == a-1 && bb == b-1 && cc == c-1) ) if(aa >= a-1 && bb >= b-1 && cc >= c-1) return 0; if(aa >= a || bb >= b || cc >= c) return -222000; if(dp[aa][bb][cc] != -1) return dp[aa][bb][cc]; dp[aa][bb][cc] = -222000; if(dat[aa][0] == 0) dp[aa][bb][cc] = max(dp[aa][bb][cc], dfs(aa+1,bb,cc)); if(dat[bb][1] == 0) dp[aa][bb][cc] = max(dp[aa][bb][cc], dfs(aa,bb+1,cc)); if(dat[cc][2] == 0) dp[aa][bb][cc] = max(dp[aa][bb][cc], dfs(aa,bb,cc+1)); dp[aa][bb][cc] = max(dp[aa][bb][cc], dfs(aa+1,bb+1,cc+1) + val(dat[aa][0],dat[bb][1],dat[cc][2])); return dp[aa][bb][cc];}int main(){ int t; cin >> t; while(t--) { memset(dat,0,sizeof(dat)); int len; scanf("%s",str);len = strlen(str); a = len*2+1;for(int i = 0;i < len;i++) dat[i*2+1][0] = str[i] -'A' + 1; scanf("%s",str);len = strlen(str); b = len*2+1;for(int i = 0;i < len;i++) dat[i*2+1][1] = str[i] -'A' + 1; scanf("%s",str);len = strlen(str); c = len*2+1;for(int i = 0;i < len;i++) dat[i*2+1][2] = str[i] -'A' + 1; memset(dp,-1,sizeof(dp)); dfs(0,0,0); if(dp[0][0][0] < 0) dp[0][0][0] = -1; cout << dp[0][0][0] << "n"; } return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/372813.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号