总是有一个程序的bug没找到
Laharl, Etna, Flonne一开始在这条射线上不同的三个点, 他们希望其中某个人能够到达下标最大的点.
每个角色只能进行下面的3种操作, 且每种操作不能每人不能进行超过一次.
1.移动一定的距离
2.把另一个角色高举过头
3.将举在头上的角色扔出一段距离
每个角色有一个movement range参数, 他们只能移动到没有人的位置, 并且起点和终点的距离不超过movement range.
如果角色A和另一个角色B距离为1, 并且角色B没有被别的角色举起, 那么A就能举起B. 同时, B会移动到A的位置,B原来所占的位置变为没有人的位置. 被举起的角色不能进行任何操作, 举起别人的角色不能移动.同时, 每个角色还有一个throwing range参数, 即他能把举起的角色扔出的最远的距离. 注意, 一个角色只能被扔到没有别的角色占据的位置. 我们认为一个角色举起另一个同样举起一个角色的角色是允许的. 这种情况下会出现3个人在同一个位置的情况. 根据前面的描述, 这种情况下上面的两个角色不能进行任何操作, 而最下面的角色可以同时扔出上面的两个角色. 你的任务是计算这些角色能够到达的位置的最大下标, 即最大的数字x, 使得存在一个角色能够到达x.
每一行有且仅有3个整数, 描述对应角色的初始位置, movement range, throwing range.
数据保证3个角色的初始位置两两不相同且所有的数字都在1到10之间.</div>
4 3 1
2 3 3
首先, Laharl移动到6.
然后Flonne移动到位置5并且举起Etna.
Laharl举起Flonne将其扔到位置9.
Flonne把Etna扔到位置12.
Etna移动到位置15.
#include <iostream>
#include <cstdio> using namespace std; typedef struct node{
int loca;
int moverange;
int throwrange;
};
struct node a[];
int w[]={};
int is_move[]={};
int is_lift[]={};
int is_throw[]={};
int is_belifted[]={};
int ans=;
int step[]={}; int dfs();
//第一个人的第一种操作,移动
void fun11(){
if(!is_move[]){
int t=a[].loca+a[].moverange;
for(int i=a[].loca-a[].moverange; i<=t; i++){
if(!w[i] && i>=){
int t1=w[a[].loca];
int t2=a[].loca;
int t3=is_move[];
w[a[].loca]=;
w[i]=;
a[].loca=i;
is_move[]=;
dfs();
w[a[].loca]=t1;
w[i]=;
a[].loca=t2;
is_move[]=t3;
} }
}
}
//第一个人的第二种操作,举起两边的
void fun12(){
for(int i=;i<=;i++){
if(w[a[].loca-]==i){
int t1=w[a[].loca-];
int t2=is_belifted[i];
int t3=is_lift[]; w[a[].loca-]=;
is_belifted[i]=;
is_lift[]=i;
dfs(); w[a[].loca-]=t1;
is_belifted[i]=t2;
is_lift[]=t3;
}
if(w[a[].loca+]==i){
int t1=w[a[].loca+];
int t2=is_belifted[i];
int t3=is_lift[];
w[a[].loca+]=;
is_belifted[i]=;
is_lift[]=i;
dfs();
w[a[].loca+]=t1;
is_belifted[i]=t2;
is_lift[]=t3;
}
}
}
//第一个人的第三种操作,扔自己上面的
void fun13(){
if(!is_throw[] && is_lift[]!=){
for(int i=a[].loca-a[].throwrange; i<=a[].loca+a[].throwrange; i++){
if(!w[i] && i>=){
int t1=w[a[].loca];
int t2=w[i];
int t3=a[].loca;
int t4=is_throw[];
w[a[].loca]=;
w[i]=is_lift[];
a[].loca=i;
is_throw[]=;
dfs();
w[a[].loca]=t1;
w[i]=t2;
a[].loca=t3;
is_throw[]=t4;
} }
}
} //第二个人的第一种操作,移动
void fun21(){
if(!is_move[]){
int t=a[].loca+a[].moverange;
for(int i=a[].loca-a[].moverange; i<=t; i++){
if(!w[i] && i>=){
int t1=w[a[].loca];
int t2=a[].loca;
int t3=is_move[];
w[a[].loca]=;
w[i]=;
a[].loca=i;
is_move[]=;
dfs();
w[a[].loca]=t1;
w[i]=;
a[].loca=t2;
is_move[]=t3;
} }
}
}
//第二个人的第二种操作,举起两边的
void fun22(){
for(int i=;i<=;i++){
if(w[a[].loca-]==i){
int t1=w[a[].loca-];
int t2=is_belifted[i];
int t3=is_lift[];
w[a[].loca-]=;
is_belifted[i]=;
is_lift[]=i;
dfs();
w[a[].loca-]=t1;
is_belifted[i]=t2;
is_lift[]=t3;
}
if(w[a[].loca+]==i){
int t1=w[a[].loca+];
int t2=is_belifted[i];
int t3=is_lift[];
w[a[].loca+]=;
is_belifted[i]=;
is_lift[]=i;
dfs();
w[a[].loca+]=t1;
is_belifted[i]=t2;
is_lift[]=t3;
}
}
}
//第二个人的第三种操作,扔自己上面的
void fun23(){
if(!is_throw[] && is_lift[]!=){
for(int i=a[].loca-a[].throwrange; i<=a[].loca+a[].throwrange; i++){
if(!w[i] && i>=){
int t1=w[a[].loca];
int t2=w[i];
int t3=a[].loca;
int t4=is_throw[];
w[a[].loca]=;
w[i]=is_lift[];
a[].loca=i;
is_throw[]=;
dfs();
w[a[].loca]=t1;
w[i]=t2;
a[].loca=t3;
is_throw[]=t4;
} }
}
}
//第三个人的第一种操作,移动
void fun31(){
if(!is_move[]){
int t=a[].loca+a[].moverange;
for(int i=a[].loca-a[].moverange; i<=t; i++){
if(!w[i] && i>=){
int t1=w[a[].loca];
int t2=a[].loca;
int t3=is_move[];
w[a[].loca]=;
w[i]=;
a[].loca=i;
is_move[]=;
dfs();
w[a[].loca]=t1;
w[i]=;
a[].loca=t2;
is_move[]=t3;
} }
}
}
//第三个人的第二种操作,举起两边的
void fun32(){
for(int i=;i<=;i++){
if(w[a[].loca-]==i){
int t1=w[a[].loca-];
int t2=is_belifted[i];
int t3=is_lift[];
w[a[].loca-]=;
is_belifted[i]=;
is_lift[]=i;
dfs();
w[a[].loca-]=t1;
is_belifted[i]=t2;
is_lift[]=t3;
}
if(w[a[].loca+]==i){
int t1=w[a[].loca-];
int t2=is_belifted[i];
int t3=is_lift[];
w[a[].loca+]=;
is_belifted[i]=;
is_lift[]=i;
dfs();
w[a[].loca+]=t1;
is_belifted[i]=t2;
is_lift[]=t3;
}
}
}
//第三个人的第三种操作,扔自己上面的
void fun33(){
if(!is_throw[] && is_lift[]!=){
for(int i=a[].loca-a[].throwrange; i<=a[].loca+a[].throwrange; i++){
if(!w[i] && i>=){
int t1=w[a[].loca];
int t2=w[i];
int t3=a[].loca;
int t4=is_throw[];
w[a[].loca]=;
w[i]=is_lift[];
a[].loca=i;
is_throw[]=;
dfs();
w[a[].loca]=t1;
w[i]=t2;
a[].loca=t3;
is_throw[]=t4;
} }
}
} int dfs(){
ans=max(ans,a[].loca);
ans=max(ans,a[].loca);
ans=max(ans,a[].loca);
//if(is_move[1]==1&&is_move[2]==1&&is_move[3]==1&&is_throw[1]==1&&is_throw[2]==1&&is_throw[3]==0||is_throw[1]==1&&is_throw[2]==0&&is_throw[3]==1||is_throw[1]==0&&is_throw[2]==1&&is_throw[3]==1){
// return 0;
//}else{
for(int i=;i<=;i++){
if(!step[i]){
switch(i){
case :step[]=;fun11();step[]=;break;
case :step[]=;fun12();step[]=;break;
case :step[]=;fun13();step[]=;break;
case :step[]=;fun21();step[]=;break;
case :step[]=;fun22();step[]=;break;
case :step[]=;fun23();step[]=;break;
case :step[]=;fun31();step[]=;break;
case :step[]=;fun32();step[]=;break;
case :step[]=;fun33();step[]=;break;
}
} }
return ;
//} } int main()
{
for(int i=;i<=;i++){
scanf("%d %d %d",&a[i].loca,&a[i].moverange,&a[i].throwrange);
}
dfs();
printf("%d\n",ans);
return ;
}
总是有一个程序的bug没找到的更多相关文章
- 我怀疑这是IDEA的BUG,但是我翻遍全网没找到证据!
你好呀,我是歪歪. 前几天有朋友给我发来这样的一个截图: 他说他不理解,为什么这样不报错. 我说我也不理解,把一个 boolean 类型赋值给 int 类型,怎么会不报错呢,并接着追问他:这个代码截图 ...
- 创建 userSettings/Microsoft.SqlServer.Configuration.LandingPage.Properties.Settings 的配置节处理程序时出错: 未能加载文件或程序集“System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”或它的某一个依赖项。系统没找到指定的文件
创建 userSettings/Microsoft.SqlServer.Configuration.LandingPage.Properties.Settings 的配置节处理程序时出错: 未能加载文 ...
- 微信小程序没找到构建npm或者没找到node_modules目录以及如何在小程序中引入vant weapp组件
微信小程序没找到构建npm或者没找到node_modules目录解决方法如下: 按照微信小程序提供的文档npm install是不行的,直接提示没找到可构建的npm包. 1.直接安装:npm init ...
- 大一C语言学习笔记(11)---编程篇--写一个程序,可以获取从键盘上输入的的三个数,并能够判断是否可以以这三个数字作为边长来构成一个三角形,如果可以的话,输出此三角形的周长及面积,要求 0 bug;
考核内容: 写一个程序,可以获取从键盘上输入的的三个数,并能够判断是否可以以这三个数字作为边长来构成一个三角形,如果可以的话,输出此三角形的周长及面积: 答案: #include<stdio.h ...
- --专访雷果国: 从1.5K到18K 一个程序员的5年成长之路--
导语:今年三月份,在CSDN博客和新浪微博上有一篇<从1.5K到18K,一个程序员的5年成长之路>被众人分享和传阅,这篇博文首先介绍了作者自学之初薄弱的基础,然后通过流水账形式分享了那个从 ...
- 专访雷水果国:离1.5K至18K 一个程序猿5每年的成长之路
我只是一个小菜鸟,对于自主学习和交流PHP(jquery,linux,lamp,shell,javascript,server)等一系列的知识.小菜鸟创建了一个群.希望光临本博客的人能够进来交流. 寻 ...
- 写一个程序,统计自己C语言共写了多少行代码。ver2.00
概要 完成一个程序,作用是统计一个文件夹下面所有文件的代码行数.输入是一个文件夹的绝对路径,输出是代码行数.所以此程序的新特点有两个: 统计某一文件夹下的所有文件: 可以任意指定本机硬盘上任何位置的某 ...
- 说实话当一个程序猿不easy
我以前说过,程序猿不是一般的人,是具有某种超能里的人.但问题是.程序猿往往意识不到自己的这样的特异功能.在他们的眼里.会觉得自己非常普通.跟常人一样,所以,程序猿能做到的事情,其它人--比方他们的客户 ...
- OD 实验(十七) - 对一个程序的逆向分析
程序: 运行程序 弹出一个对话框,点击 OK 来到主界面,点击 Help -> Register Now 这是输入注册码的地方 按关闭程序的按钮 会提示剩下 30 天的使用时间 用 Ressco ...
随机推荐
- Using Internal EEPROM of PIC Microcontroller
There are commonly three types of memories in a PIC Microcontroller, Flash Program Memory, Data Memo ...
- Caliburn.Micro学习笔记(四)----IHandle<T>实现多语言功能
Caliburn.Micro学习笔记目录 说一下IHandle<T>实现多语言功能 因为Caliburn.Micro是基于MvvM的UI与codebehind分离, binding可以是双 ...
- .NET Core 1.0 RC2 历险之旅
文章背景:对于.NET Core大家应该并不陌生, 从它被 宣布 到现在已经有1-2年的时间了,其比较重要的一个版本1.0 RC2 也即将发布..Net Core从一个一个的测试版到现在的RC2,经历 ...
- sFlow-RT
sFlow-RT™ incorporates InMon's asynchronous analytics technology (patent pending), delivering real-t ...
- jQuery之Ajax--全局Ajax事件处理器
1.这些方法用于注册事件处理器,用来处理页面上的任何 Ajax 请求,当某些事件触发后,这些事件处理器被调用.如果jQuery.ajaxSteup()中的 global 属性被设置为 true (这也 ...
- Poisson泊松分布
PMF 若随机变量\(K\)的概率质量函数PMF为 \[ P(K = k) = e^ {-\lambda} \frac {\lambda^k}{k!} \] 则称:\(K \sim Poisson(\ ...
- 解决 Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in
转载 php 5个版本,5.2.5.3.5.4.5.5,怕跟不上时代,新的服务器直接上5.5,但是程序出现如下错误:Deprecated: mysql_connect(): The mysql ext ...
- JAVA锁的膨胀过程和优化
首先说一下锁的优化策略. 1,自旋锁 自选锁其实就是在拿锁时发现已经有线程拿了锁,自己如果去拿会阻塞自己,这个时候会选择进行一次忙循环尝试.也就是不停循环看是否能等到上个线程自己释放锁.这个问题是基于 ...
- Spring-IOC-BeanFactory
BeanFactory BeanFactory 是 Spring 的“心脏”.它就是 Spring IoC 容器的真面目.Spring 使用 BeanFactory 来实例化.配置和管理 Bean.但 ...
- React Native 开发之 (01) 配置开发环境
一 React Native React Native 是由Facebook发布的开源框架,着力于提高多平台开发的开发效率 —— 仅需学习一次,编写任何平台.(Learn once, write an ...