nefu 627 剪纸游戏
来源:互联网 发布:c 高级编程 pdf 11版 编辑:程序博客网 时间:2024/04/27 22:28
题目:给定一个n*m大的纸张,上面表明了每块上的字母,在其背后给定了对应位置的字母的value,在最后给出需要剪出来的剪纸的字母序列。
方法:暴力搜索。
代码:
#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>using namespace std;char map[502][502];int Map[502][502];int vis[502][502];char s[30];int ans=-10000000;int len=0;void dfs(int l,int r,int t,int sum){ sum+=Map[l][r]; if(t==len) { if(ans<sum) ans=sum; return; } vis[l][r]=1; if(map[l-1][r]==s[t]&&!vis[l-1][r]) dfs(l-1,r,t+1,sum); if(map[l][r-1]==s[t]&&!vis[l][r-1]) dfs(l,r-1,t+1,sum); if(map[l+1][r]==s[t]&&!vis[l+1][r]) dfs(l+1,r,t+1,sum); if(map[l][r+1]==s[t]&&!vis[l][r+1]) dfs(l,r+1,t+1,sum); vis[l][r]=0;}int main(){ int m,n; int t; cin>>t; while(t--) { cin>>m>>n; ans=-10000000; memset(map,0,sizeof(map)); memset(Map,0,sizeof(Map)); memset(vis,0,sizeof(vis)); for(int i=1;i<=n;i++) scanf("%s",&map[i][1]); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) scanf("%d",&Map[i][j]); scanf("%s",s); len=strlen(s); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(map[i][j]==s[0]) dfs(i,j,1,0); if(ans==-10000000) //找不到的情况 cout<<-1<<endl; else cout<<ans<<endl; } return 0;}
0 0
- nefu 627 剪纸游戏
- nefu 627 剪纸游戏(搜索)
- 剪纸
- NEFU 627
- 绘制剪纸
- 水浒108将剪纸
- 剪纸效果制作
- 在线设计:体验在线剪纸
- hrbust1828 剪纸条(DP)
- 剪纸上的光影童话
- HDU - 4090(暴力剪纸题目,)
- 2.7.2_剪纸图形
- 2.7.2_剪纸效果
- nefu 406
- nefu 115
- nefu 116
- nefu 84
- NEfu 639
- 在Eclipse中调试Felix
- Java Card CAP 文件组件分析 03—— Applet Component
- hdu1506 条形图
- 尽早理财的8个思维
- iOS开发 -- 分析CrashLog (1) symbolicatecrash+Organizer
- nefu 627 剪纸游戏
- 多线程操作案例---生产者与消费者
- Java Card CAP 文件组件分析 04—— Import Component
- UVALive 6525
- 赚钱的8大定律
- c#中new和override的区别
- cocos2d-x plist文件各个属性的含义
- hdu 1060
- java GUI