popStar手机游戏机机对战程序
DFS算,五分钟如果答案没有更新,那个解一般来说就很优了。
#include <cstdio> #include <iostream> #include <string.h> #include <cstdlib> #include <algorithm> #include <queue> #include <vector> #include <cmath> #include <map> #include <stack> using namespace std; int const uu[4] = {1,-1,0,0}; int const vv[4] = {0,0,1,-1}; typedef long long ll; int const inf = 0x3f3f3f3f; ll const INF = 0x7fffffffffffffffll; double eps = 1e-10; double pi = acos(-1.0); #define rep(i,s,n) for(int i=(s);i<=(n);++i) #define rep2(i,s,n) for(int i=(s);i>=(n);--i) #define mem(v,n) memset(v,(n),sizeof(v)) #define lson l, m, rt<<1 #define rson m+1, r, rt<<1|1 struct node{int x,y; }tempAns[205],Ans[205];char FIRST[101][101]; bool VIS[101][101]; int bestScore; int STEP;bool check(char mp[101][101],int x,int y){rep(k,0,3){int xx=x+uu[k], yy=y+vv[k];if(xx>=1&&xx<=100 && yy>=1&&yy<=100 && mp[xx][yy]==mp[x][y]) return true;}return false; } int color1(char mp[101][101],bool vis[101][101],int x,int y){vis[x][y]=true;int res=1;rep(k,0,3){int xx=x+uu[k], yy=y+vv[k];if(xx>=1&&xx<=100 && yy>=1&&yy<=100 && vis[xx][yy]==false && mp[xx][yy]==mp[x][y]) res+=color1(mp,vis,xx,yy);}mp[x][y]=0;return res; } void proc1(char mp[101][101]){rep(j,1,10) rep2(i,9,1){int g=i,h=j;while(g+1<=10 && mp[g+1][h]==0) ++g;mp[g][h]=mp[i][j];if(g!=i) mp[i][j]=0;}rep(j,2,10){if(mp[10][j]==0) continue;int k;for(k=j-1;k>=1;--k) if(mp[10][k]!=0) break;if(k+1<j){rep(i,1,10){mp[i][k+1]=mp[i][j];mp[i][j]=0;}}} }void print(){char ms[101][101];bool vs[101][101]; mem(vs,false);rep(i,1,10) rep(j,1,10) ms[i][j]=FIRST[i][j];rep(i,1,10){rep(j,1,10)if(Ans[1].x==i&&Ans[1].y==j)printf("#");else{if(ms[i][j]==0)printf(" ");elseprintf("%d",ms[i][j]);}cout<<endl;}rep(i,1,STEP){printf("step%d = (%d,%d)\n",i,Ans[i].x,Ans[i].y); cout<<endl<<endl;color1(ms,vs,Ans[i].x,Ans[i].y);proc1(ms);if(i!=STEP){rep(k,1,10){rep(j,1,10)if(Ans[i+1].x==k&&Ans[i+1].y==j)printf("#");else{if(ms[k][j]==0)printf(" ");elseprintf("%d",ms[k][j]);}cout<<endl;}}} }//mp[][]:current state step:current step score:current score void dfs(char mp[101][101],bool vis[101][101],int tx,int ty,int step,int score){ //printf("step=%d score=%d click on (%d,%d) of last image.\n",step,score,tx,ty);/*rep(i,1,10){rep(j,1,10) if(mp[i][j]!=0) printf("%d ",mp[i][j]); else printf(" ");cout<<endl;}*/tempAns[step].x=tx;tempAns[step].y=ty;rep(i,1,10) rep(j,1,10){if(mp[i][j]==0) continue; //这个位置是空的,跳过if(vis[i][j]) continue; //计算过,跳过if(check(mp,i,j)==false){ //点击这个位置没法消去块vis[i][j]=true;continue;}char temp_mp[101][101];bool temp_vis[101][101]; mem(temp_vis,false);rep(i1,1,10) rep(j1,1,10) temp_mp[i1][j1]=mp[i1][j1];int ts=color1(temp_mp,vis,i,j);proc1(temp_mp);dfs(temp_mp,temp_vis,i,j,step+1,score+5*ts*ts);}if(score>bestScore){STEP=step;rep(i,0,step) Ans[i]=tempAns[i];bestScore=score;cout<<"bestScore = "<<bestScore<<endl;//print();rep(i,1,step) printf("step%d = (%d,%d)\n",i,Ans[i].x,Ans[i].y); cout<<endl<<endl;} }void read(){rep(i,0,10) rep(j,0,10) FIRST[i][j]=-1;freopen("c:\\hello.in","r",stdin);rep(i,1,10) rep(j,1,10) scanf("%d",&FIRST[i][j]);fclose(stdin); } void init(){bestScore=0;mem(VIS,false); } int main(){read();init();dfs(FIRST,VIS,-1,-1,0,0); }
转载于:https://www.cnblogs.com/fish7/p/4068750.html
popStar手机游戏机机对战程序相关推荐
- 请问开发手机游戏需要什么软件?
请问开发手机游戏需要什么软件? 一.总结 一句话总结: 二.请问开发手机游戏需要什么软件? 首先你有编程基础是再好不过的了. 手机游戏开发的平台是JME,一般不会用到C++.当然学过C++的更好. 你 ...
- Java手机游戏开发简明教程 (SunJava开发者认证程序员 郎锐)
原文发布时间为:2008-07-30 -- 来源于本人的百度文章 [由搬家工具导入] Java手机游戏开发实例简明教程 (SunJava开发者认证程序员 郎锐) 一.手机游戏编写基础 1.手机游戏设计 ...
- hive时空链战_时空链战Chain Strike游戏电脑版下载_时空链战Chain Strike最新电脑版下载_18183手机游戏下载...
时空链战Chain Strike电脑版下载拥有丰富的玩法模式任你选择,让你的游戏过程更加的精彩! <时空链战>(Chain Strike)由韩国游戏商Com2uS研发制作,故事讲述了男主角 ...
- 小程序源码:游戏助手王者战力查询扫码登录多功能微信小程序
这是一款游戏多功能助手小程序 内由王者战力查询(支持微信QQ双端查询,安卓IOS) 游戏扫码登录(内支持多种游戏扫码登录) 短视频去水印功能(支持各大平台) 游戏改名助手(支持空白名生成,符号名生成) ...
- Java游戏里面的星球大战_星球大战手机游戏-JAVA程序算法
内容简介: 毕业设计 星球大战手机游戏-JAVA程序算法,共18页,9196字 摘 要 近年来,随着各种不同设备,尤其是移动通信设备的飞速发展诞生了一项新的开发技术-J2ME.它定位在消费性电子产品的 ...
- 游戏助手微信小程序源码王者荣耀战力查询,游戏扫码登录器等支持流量主
这是一款游戏助手小程序源码,UI方面的话还是挺简单,小编个人看着挺舒服的 小程序内支持多种热门游戏扫码登录,也就是说是一个游戏登录器 比如英雄联盟,王者荣耀,和平精英等等热门游戏都支持 另外还有王者战 ...
- 小程序源码:游戏助手微信小程序源码王者荣耀战力查询,游戏扫码登录器-多玩法安装简单
这是一款游戏助手小程序源码,UI方面的话还是挺简单,小编个人看着挺舒服的 小程序内支持多种热门游戏扫码登录,也就是说是一个游戏登录器 比如英雄联盟,王者荣耀,和平精英等等热门游戏都支持 另外还有王者战 ...
- 程序员必玩:盘点程序员不容错过的手机游戏
点击上面 免费订阅本账号! 本公众号主要推送javaweb开发相关技术,基础知识点,同时会深入剖析复杂的问题,分享一些优秀的框架,大型项目经验,当今最流行的Javaweb技术,热点科技新闻,招聘信息, ...
- 微信小程序:游戏助手王者战力查询扫码登录多功能小程序源码
这是一款游戏多功能助手小程序 内由王者战力查询(支持微信QQ双端查询,安卓IOS) 游戏扫码登录(内支持多种游戏扫码登录) 短视频去水印功能(支持各大平台) 游戏改名助手(支持空白名生成,符号名生成) ...
最新文章
- SQL server 系统优化--通过执行计划优化索引(1) (转)
- Linq 学习笔记(二)
- Windows10 下搭建汇编语言开发环境( 利用 DOSBOX 和 MASM32 )
- strlen函数实现
- 《金领简历》精华 创业公司 面试机会 简历
- 关于git push报403的问题
- x=min(x, y)
- wamp 出现 The requested URL / was not found on this server
- 电子计算机教室宣传标语,电子备课室宣传标语有哪些
- Web前端工程师修炼之道(原书第4版) 中文pdf扫描版
- android 半透明色值_最全的Android 颜色透明度
- 电源测试之输出动态响应(Output Dynamic Response Test)
- PLC编程指南_变量命名规则介绍
- p2p与反p2p的博弈,一劳永逸真的不容易么
- php统计邮件打开率,监控 Amazon SES 电子邮件的打开率、点击率和退回率
- python颜色填充代码_python中如何给图形填充颜色
- UML(系统分析与设计核心总结)+期末考试例题分析
- python计算坡度_基于python实现利用DEM数据计算坡度、坡向
- 未名湖边的烦恼引起的递归问题探讨
- GUC-11 线程池
热门文章
- 使用JPA进行Update操作 @Query注解的用法,JPL
- C++ 笔记(27)— 指针变量、数组和指针、指针数组、数组指针、指针常量与常量指针
- 解决pip安装报错:is not a supported wheel on this platform
- 2018 Google kickstart Problem A. Planet Distance
- 阿里云Centos 解决挖矿程序:kdevtmpfsi--服务器CPU占用高、内存占用高
- Arm Cortex-M23 MCU,Arm Cortex-M33 MCU与RISC-V MCU技术
- TVM在ARM GPU上优化移动深度学习
- X-Deep Learning功能模块
- H265与ffmpeg改进开发
- TensorRT 加速性能分析