POJ 1078

约瑟夫问题(再看!!!!!!) 来源 POJ2746;PG1078 描述 约瑟夫问题:有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始报数,一直数到m,数到m的猴子退出圈外,剩下的猴子再接着从1开始报数。就这样,直到圈内只剩下一只猴子时,这个猴子就是猴王,编程求输入n,m后,输出最后猴王的编号。 关于输入 每行是用空格分开的两个整数,第一个是 n, 第二个是 m ( 0 < m,n <=300)。最后一行是: 0 0 关于输出 对于每行输入数据(最后一行除外),输出数据也是一行,即最后猴王的编号 例子输入 阅读详情

http://acm.pku.edu.cn/JudgeOnline/problem?id=1078

这题是典型的DFS回溯题,主要意思是给定两个整数,要求分别对这两个数进行因子分解,因子必须是100以内且不能重复。

问,这两个整数是否存在不相交的因子集,例如:24和12,分别可以分解为2 * 12, 3 * 4,所以存在;而49和343就不行了,

49不能分解(否则有7重复了),343只能分解为7*49,是相交的。

算法的主要思想就是利用DFS回溯

先找较小数的因此分解策略,并对已经使用过的因子进行标记,然后再找较大数的因子,如果能找着,说明是不相交的

 

#include <iostream>
#define MAXV(a, b) ((a) >= (b) ? (a) : (b))
#define MINV(a, b) ((a) <= (b) ? (a) : (b))
#define MAX_N 100

using namespace std;


int high, low;

bool visited, found;
bool used[MAX_N + 5];

bool getRes(int pos, int low, int high)
{

    //如果能进这个IF语句,则说明当前所求数是可以分解为100以内不重复的因子的
    if(low == 1)
    {

        //如果小的数的因子分解已经完成,那么说明当前进行的是较大数的因子分解,则说明这两套因子是不相交的
        if(visited)
            return true;
        else
        {

            //进行标记, visited为true说明较小数的因子分解已经完成
            found = visited = true;

            //对较大数进行因子分解
            if(getRes(1, high, high)) return true;
            visited = false;
            return false;
        }
    }

    //因子超出了范围
    else if(pos > 100)
        return false;
    else
    {

        //DFS所有的分解方案
        for(int i = pos; i <= 100; i++)
        {
            if(low % i == 0 && !used[i])
            {

                //对已经使用过的因子进行分解
                used[i] = true;

                //DFS下一步
                if(getRes(pos + 1, low / i, high))
                    return true;
                used[i] = false;
            }
        }
        return false;
    }
}

int main()
{
    int temp1, temp2;
    while(cin>>temp1>>temp2)
    {
        high = MAXV(temp1, temp2);
        low = MINV(temp1, temp2);

        visited = found = false;
       
        memset(used, 0, sizeof(used));
       
        bool res = getRes(1, low, high);
        if(res) cout<<high<<endl;
        else
        {
            if(found)
                cout<<low<<endl;
            else
                cout<<high<<endl;
        }
     }
     return 0;
}

TOD和PPS精确时间同步技术 授时 阅读详情

相关推荐

Ubuntu22.04 apt 安装 ROS1 ROS Noetic Ninjemys

ubuntu 22.04 apt-get 安装 ros1 ros Noetic 最新版

autolabor的博客 5万+

poj1078-Gizilch

思路不难,就是自己的代码操蛋了,,, 错了n遍,,,经过磨难,终于找到了错误,,,, 贴一下代码吧: #include #include #define MAX(x,y) x>y?x:y #define MIN(x,y) x<y?x:y int max, min, flag, ff; bool f[101]; int dfs(int t) { if(t==1) {

稻草人 1097

STM32F103开发实战:如何用CubeMX+CLion调整Flash起始地址(附完整CMake配置)

本文详细介绍了在STM32F103开发中如何使用CubeMX和CLion工具链调整Flash起始地址,包括链接脚本修改、系统文件配置和CMake工程适配。通过实战步骤和完整配置示例,帮助开发者实现固件双备份、OTA升级等高级功能,提升嵌入式开发效率。

5b6n7m8的博客 211

POJ1078题解(dfs搜索乘积项)

题意描述: 给两个整数是否可以分解为1-n的整数乘积,且乘积项各不相同,如果是这样的话输出二者最大值,或较小的数不能分解也输出最大值,否则输出较大的那个。 代码: #include<iostream> using namespace std; #include<vector> #include<algorithm> int flag[101] = { 0 }; vector<int>temp; void dfs(int n,vector<vector&l

stn54999的博客 218

嵌入式状态机编程-QP状态机框架与常见状态机方法

状态机基本术语 现态:是指当前所处的状态。 条件:又称为“事件”,当一个条件被满足,将会触发一个动作,或者执行一次状态的迁移。 动作:条件满足后执行的动作。动作执行完毕后,可以迁移到新的状态,也可以仍旧保持原状态。动作不是必需的,当条件满足后,也可以不执行任何动作,直接迁移到新状态。 次态:条件满足后要迁往的新状态。“次态”是相对于“现态”而言的,“次态”一旦被激活,就转变成新的“现态”了。 传统有限状态机Fsm实现方法 如图,是一个定时计数器,计数器存在两种状态,一种为设置状态,一种为计时状态 设

qq_36969440的博客 9665

CPU设计实战:Loongarch版 lab6--20条指令单周期CPU

这个debug卡我时间最长的就是通用寄存器的写使能信号,当时一直没找到,甚至把golden—trace生成了一遍又一遍,对照test,检查了各种,卡了很长时间,我都以为是我之前哪一步搞错了,或者环境什么的,但是一步步做下来并没有,并且“机器永远是对的”让我终于查到了错。debug到一半才想起来写个博客,就不写过程了,下个lab再写过程。下面是两个模块的代码,运行已通过仿真验证。其他的bug就还好,如果认真跟着。就能马上找出来,,上面的每一句话都很重要。走,按逻辑检查并且查。

m0_65369544的博客 6303

poj 1078 记忆话搜索

poj 1078 记忆话搜索 英语是个大坑啊  卧槽  英语渣做acm光看题目就要花去半个小时 最关键的是还看错  我把这道题看成可以走K个格子 理解为可以转弯了 其实是只能水平走  但是我觉得转弯也可以做 也是dp 记忆化搜索 贴一段自己开始写的  #include #include #include #define Min(a,b) a>b?b:a #define

liyanfeng1996的博客 437

机器人轨迹规划——梯形速度轨迹(超详细)

机器人轨迹 这一系列轨迹教程将主要包括以下内容: 点到点轨迹(P2P) 五次多项式插值轨迹 三次多项式插值轨迹 梯形速度曲线轨迹 双S形速度曲线轨迹 多个自由度轨迹的时间同步 在线轨迹规划 多项式在线轨迹规划 梯形在线轨迹规划 双S形在线轨迹规划 非线性实时轨迹滤波 多点轨迹(Multi-point) 三次样条曲线(cubic spline) 贝赛尔曲线(Bezier Curve) B样条曲线(BSpline) 时间最优轨迹 三次样条时间最优轨迹 任意路径下的时间最优轨迹 时间

出门搔白首,若负平生志 1万+

POJ 1078 Gizilch 笔记

100个葡萄被标记为1到100号。两个人比赛吃葡萄,把每次吃到的葡萄数相乘为结果,最后自己报成绩,结果大的获胜。结果小的一方总是诚实的,如果结果大的一方撒谎,结果小的一方获胜。输出获胜一方的成绩。

woniupengpeng的专栏 716

11、基于STM32的智能药盒

当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未有的速度被单片机智能控制系统所取代。嵌入式具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。

行走的皮卡丘 6103

Unity 热更 之 【YooAsset 热更】几分钟快速了解 YooAsset [功能面板]、以及 [基础代码] 说明

Unity 的资源管理系统不断发展,以适应不同项目的需求和解决特定的问题。AssetBundle 和 Addressable Asset System 是 Unity 官方提供的资源管理解决方案,而 YooAsset 是第三方提供的资源管理系统。简化的API和易用性YooAsset 可能提供了更简单直观的 API,使得资源加载和管理更加容易。对于不熟悉 Addressable 或 AssetBundle 复杂配置的开发者来说,YooAsset 可能是一个更易于上手的选择。性能优化。

仙魁XAN 2956

poj 1078

好题 #include <iostream> #include <cstdio> #include <iomanip> #include <string> #include <cstdlib> #include <cstring> #include <queue> #include <set> #inc...

Fawkess的博客 239

黑猫带你学eMMC协议第17篇:超详细的eMMC HS200 & HS400讲解

1 前言 1.1 声明 本文依据eMMC JEDEC5.1及个人工作经验整理而成,如有错误请留言。 本文结合eMMC JEDEC5.1协议手册查看效果更佳。 1.2 内容提要 本文大约6000字,主要内容有: 1.什么是emmc hs200/hs400? 2.什么是tuning?tuning的过程又是什么? 3.如何设置才能让emmc进入hs200 mode? 4.如何设置才能让emmc进入hs400 mode? 5.emmc关于HS200/HS400内部结构框图对比。 6.部分个人相关经验总结。

黑猫奥利奥的博客 1万+

poj 1078 Gizilch

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33918114的博客 339

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

POJ 1088 滑雪 && HDU 1078 FatMouse and Cheese (坐标DP两题对比)

POJ 1088 滑雪 HDU 1078 FatMouse and Cheese 两题题意大致相同,做法也相同,差别在于最后输出,到底是直接输出dp[1][1](我使用 1,1 点作为起点),还是在dp数组中选择最大值。我因为没考虑清这个问题,两题分别用了另一题的输出方式。。。。 首先在做滑雪的时候,因为测试样例能够遍历全图,所以我直接在最后输出了dp[1][1],然后提交一直WA,后来

JasonWu的博客 275

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

poj1088&&hdu1078(不用记忆化搜索)

1.poj1088 链接:点击打开链接 题意:Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。 代码: #include #include #include #include

stay_accept的专栏 515

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Codevs 1078 ==Poj 1258 Agri-Net

Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 53270   Accepted: 22140 Description Description Farmer John has been elected mayor of his town! One of his campaign pro

苦鬼·。 208

记忆化搜索例题 记忆化搜索

1.poj 1579 题目链接: http://poj.org/problem?id=1579 代码如下: #include <cstdio> #include <cstring> #include <algorithm> #include <iostream> using namespace std; const int maxn=1e...

zamaochick的博客 642

POJ1088 滑雪题解+HDU 1078(记忆化搜索DP)

Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8...

日拱一卒,功不唐捐 2740

约瑟夫问题(POJ2746;PG1078)

<br />问题描述:约瑟夫问题:有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始报数,一直数到m,数到m的猴子退出圈外,剩下的猴子再接着从1开始报数。就这样,直到圈内只剩下一只猴子时,这个猴子就是猴王,编程求输入n,m后,输出最后猴王的编号。<br />关于输入:每行是用空格分开的两个整数,第一个是 n, 第二个是 m ( 0 < m,n <=300)。最后一行是: <br /><br />0 0<br />关于输出:对于每行输入数据(最后一行除外),输出数据也是一行,即最后猴王的编号

Augmented Reality & Computer Graphics 2563

HDU1416 POJ1078 UVA653 LA5507 Gizilch【DFS】

Gizilch Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 497 Accepted Submission(s): 142 Problem Description The game of gizilch has very simple rules. First 100 grapes are labeled, in nontoxic ink

海岛Blog 546

线段树 lazy tag 小合集

(这里的基础和进阶纯粹是根据PO主水平说的…大家意思意思看看就好Orz)基础 poj 3468 hiho 1078 poj 2777 hdu 4902 进阶 hdu 3911 hdu 3397 未完待续基础poj 3468题目链接题意: 两种操作: 1. 对一段区间中的每一个数都加上一个值 2. 询问区间和我学习 lazy tag 的第一道题,可以说是十分经典的模板题了,看了dalao的博客然

kkkkahlua的博客 527

【DFS(记忆化)】hdu 1078 FatMouse and Cheese(poj 1088 滑雪)

#include #include #include #include using namespace std; const int NM=105; int a[NM][NM],vs[NM][NM],n,k,mmax; int d[4][2]={-1,0,1,0,0,-1,0,1}; int max(int x,int y){ return x>y?x:y

yduqytd的专栏 603

hdu_1069_Monkey and Banana hdu_1078_FatMouse and Cheese poj_1836_Alignment

hdu_1069_Monkey and Banana hdu_1078_FatMouse and Cheese poj_1836_Alignment

xuelanghu407 1089

[动态规划/记忆化搜索]HDU/HOJ 1078 FatMouse and Cheese

<br />http://acm.hdu.edu.cn/showproblem.php?pid=1078<br /> <br />题意类似POJ 1088 滑雪。<br />http://poj.org/problem?id=1088<br /> <br />可能首先会想到DFS暴搜,但是N>12基本是TLE了,然后可以发现是很简单的递推。<br />类似小蜜蜂,用记忆化搜索实现比较简单。<br /> <br />#include<iostream> using namespace std; const

FOBNN + ACCESSION + 2011 506

《ACM国际大学生程序设计竞赛题解Ⅰ》——基础编程题

这个专栏开始介绍一些《ACM国际大学生程序设计竞赛题解》上的竞赛题目,读者可以配合zju/poj/uva的在线测评系统提交代码(今天zoj貌似崩了)。 其实看书名也能看出来这本书的思路,就是一本题解书,简单暴力的通过题目的堆叠来提升解决编程问题的能力。 那么下面开始探索吧。 poj1037: Description Background For years, com...

weixin_30408675的博客 441
上一篇: poj 1077 Eight
下一篇: POJ Dreisam Equations
bobten2008
博客等级 码龄18年 153粉丝 157原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值