Problem 3 骰子游戏
![](/assets/blank.gif)
样例输入输出
数据规模
每走一次,需要累加相应的权值。
分析:
算法一
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=100+5;
const int size=262143,INF=2000000000;//262143是2^18-1(1<<18-1)。
int c[5][7]={{0,0,0,0,0,0},{0,1,2,6,3,4,5},{0,5,3,1,4,2,6},{0,1,2,4,5,6,3},{0,3,5,2,4,1,6}};
int state[25]={0,123456,124563,125634,126345,213654,214365,
215436,216543,351624,352416,354162,356241,
461325,462513,463251,465132,531426,532614,
534261,536142,641523,642315,643152,645231};
int dx[5]={0,1,0,-1,0},dy[5]={0,0,1,0,-1};
struct node{int x,y,k;int a[7];
};
int dis[maxn][maxn][25];
bool v[maxn][maxn][25];
node q[size];
int sx,sy,ex,ey,k;
int head,tail,n,ans,test;
int d[7],t[7];
int number()
{int i,x;x=0;for(i=1;i<=6;i++)x=x*10+t[i];for(i=1;i<=24;i++)if(x==state[i]) return i;return 0;
}
void bfs()
{int i,j;node now,tmp;head=0;tail=1;memset(dis,0x7f,sizeof(dis));q[1].x=sx;q[1].y=sy;q[1].k=0;for(i=1;i<=6;i++) q[1].a[i]=i;dis[sx][sy][0]=d[5];memset(v,0,sizeof(v));while(head<tail){head=(head&size)+1;now=q[head];for(i=1;i<=4;i++){tmp.x=now.x+dx[i];tmp.y=now.y+dy[i];if(tmp.x<1||tmp.x>n) continue;if(tmp.y<1||tmp.y>n) continue;for(j=1;j<=6;j++)t[j]=now.a[c[i][j]];k=number();if(dis[tmp.x][tmp.y][k]>dis[now.x][now.y][now.k]+d[t[5]]){dis[tmp.x][tmp.y][k]=dis[now.x][now.y][now.k]+d[t[5]];if(!v[tmp.x][tmp.y][k]){v[tmp.x][tmp.y][k]=true;tail=(tail&size)+1;q[tail].x=tmp.x; q[tail].y=tmp.y; q[tail].k=k;memcpy(q[tail].a,t,sizeof(t));}}}v[now.x][now.y][now.k]=false;}ans=INF;for(i=1;i<=24;i++)if(dis[ex][ey][i]<ans) ans=dis[ex][ey][i];
}
int main()
{int i;freopen("cube.in","r",stdin);freopen("cube.out","w",stdout);scanf("%d%d",&n,&test);for(int i=1;i<=6;i++)scanf("%d",&d[i]);for(i=1;i<=test;i++){scanf("%d%d%d%d",&sx,&sy,&ex,&ey);bfs();printf("%d\n",ans);}return 0;
}
Problem 3 骰子游戏相关推荐
- python学习之掷骰子游戏
""" 通过学习的python知识,写一个简单的python小游戏 游戏名字:掷骰子比大小 游戏规则: 1.玩家可以选择玩掷几个骰子游戏(默认3个) 2.玩家可以设置双方 ...
- 寄娱于学第2天——PHP骰子游戏篇--优化
前一篇关于PHP版本的骰子游戏(详见此),for循环的实现,在高并发下,效率显然是非常地低的. 下面是优化结果,如果您有更好的方法,望不吝赐教! <?php /** * Description ...
- html5 筛子,html5摇骰子游戏
骰子游戏body#can;can;ctx;[];;;]]];window.οnlοad= function(){ can); ctx);ctx.clearRect(0,0,can.width,can. ...
- html5游戏 dice掷骰子,使用jQuery实现掷骰子游戏
本文实例为大家共享了jQuery实现掷骰子游戏的详细代码,供大家参考,详细内容如下 直接新版建一个html网页,需要在head中引入jquery,js,一些css代码以及js代码,如下: .wrap{ ...
- R语言简单应用掷骰子游戏
.练习8-1 在掷骰子游戏中,玩家(射手)准备掷出两个骰子,每个骰子都有六个面.如果掷出的总数为2.3或12,则该射手失败.如果总数是7或11,则对手(他)胜出.如果是其他任何得分,那么此得分将变成新 ...
- python可视化窗口制作一个摇骰子游戏_python摇骰子游戏小案例
python摇骰子游戏小案例 小案例: import random #充值函数 def topup(): global money n = input('充值金额(100元等于30个金币充值金额不低于 ...
- html5 摇骰子游戏,html5 canvas掷骰子(简单,学习基础canvas)
下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. 置骰子游戏 var cwidth = 400; //保存画布宽度和高度,用于擦除用 var ...
- Java 简单的摇骰子游戏:案例
package TestDemo;import java.util.Random; import java.util.Scanner;/*** 摇骰子游戏**/ public class TestDe ...
- python摇骰子游戏小案例
python摇骰子游戏小案例 小案例: import random#充值函数 def topup():global moneyn = input('充值金额(100元等于30个金币充值金额不低于100 ...
最新文章
- 在JavaScript中以日期/月/年格式获取当前日期
- c 给定字符串中查找_【C进阶】练习题(一)
- Linux内核态之间进程通信,Linux 系统内核空间与用户空间通信的实现与分析[转载]...
- steam怎么设置邮箱令牌_steam盗号?这样做50%能够避免损失!
- centos 6.7 perl 版本 This is perl 5, version 22 安装DBI DBD
- html修改img图片颜色,html中img图片设置透明度的方法
- 私域流量运营和微商有什么区别?
- 微信小程序—带qq表情的评论输入框
- UE4 制作玻璃材质总结
- Firefox ios 火狐浏览器iOS版本二次开发(一)
- AWS 赞助 Rust 中文社区创业者
- 2021年中国影院行业发展现状:院线影院规模集中度持续增强,票房前五名排名保持稳固[图]
- java 模块解耦_微服务架构:如何用十步解耦你的系统?
- poj3253切割木板(哈夫曼树) 贪心【优先队列】
- Elasticsearch根据日期(年-月-日 时:分:秒)进行range(时间范围筛选)
- The following error occurred while installing.This is a fatal error andinstallation will be aborted.
- (Java) 实现打印菱形图案
- Axure9网易云低保真原型设计
- Linux主机Windows容器,了解用于Linux和 Windows容器的Docker“容器主机”与“容器操作系统”...
- IT界的兄弟姐妹们,大家好。
热门文章
- 计算机磁盘管理找不到第二块硬盘,WIN10检测不到第二块硬盘怎么办_WIN10无法检测到第二块硬盘解决方法-win7之家...
- 摄像头的MIPI接口、DVP接口和CSI接口听语音 zhuanzai
- 15、青年歌手大赛_评委打分
- 文件所在的卷已被外部更改,因此打开的文件不再有效
- 三菱空调红外码值编码规则解析
- 系统重装 Ghost系统的disk to image等等是什么意思
- Excel巧使2个字和3个字的名字对齐显示
- 2023年全国最新工会考试精选真题及答案5
- 全国计算机一级wps考试大纲,计算机一级WPS Office考试大纲(2021年版)
- 在自己的电脑上搭建服务器,发布自己的网站