洛谷P1088火星人

1088 火星人(next_permutation函数) 题意其实很简单,给定一个数12345然后加上一个整数312344=1+3=4。·函数next_permutation下一个排列组合。所以这个题其实是一个模拟,很简单的模拟。这种排列顺序其实和排列组合有点类似。124534(手动模拟)所以我们该输出12453。... 阅读详情

        显而易见,只是一道全排列的题目,有了P1076的经验这道题应该不算难,dfs方法。

        这道题重点是起始的全排列被给了出来,需要往后遍历出比它大的。

        本题一共涉及4个变量和3个数组:

n:题目中火星人的手指数量

m:需要向后推的数

flag:用来记录比火星人给出数大的数的数量

x:操作的数的位置

mars数组:记录火星人给的数

sta数组:由于每个数字只能选择一次,记录各个数字的状态

ans数组:最终答案

        这道题一共有个2个需要解决的问题:

1.如何从火星人给出的数字开始向后全排列

2.flag为多少时应该输出答案

        大致思路:

        从第一位数开始调用dfs,如果flag为0,证明刚开始进行搜索,让这一位数字等于火星人给出的同位数字,sta数组记录数字状态,使用过的数字记为true,继续向下搜索x+1位,如果下x>n说明已经将所有的数字操作完,如果符合条件输出,不符合return掉继续搜索,然后回溯一下。

        为了防止输出结果后程序仍然进行一些不必要的搜索,输出后直接退出程序。

        具体代码如下

#include "iostream"
using namespace std;
int mars[10005],n,m,ans[10005],flag;
bool sta[10005];
void dfs(int x){
    if(x>n){
        flag++;
        if(flag==m+1){//火星人给出的排列为1,所以要加上1
            for(int i=1;i<=n;i++)cout<<ans[i]<<" ";
            exit(0);//输出结果退出程序
        }
        return;
    }
    for(int i=1;i<=n;i++){
        if(!flag)i=mars[x];//让i从火星人给出的数字为起始开始搜索
        if(!sta[i]){//如果i数字没有被选中,让x位等于i,并标记i的状态
            ans[x]=i;
            sta[i]=true;
            dfs(x+1);//继续搜索下一位
            ans[x]=0;//状态回溯
            sta[i]=false;
        }
    }
}
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++)cin>>mars[i];
    dfs(1);
}

从平面到立体:一张图看懂MOSFET、FinFET到GAAFET的演变史(附结构对比图) 本文深入解析了半导体晶体管从平面MOSFET到三维FinFET,再到全环绕栅极GAAFET的技术演进历程。通过结构对比图和物理原理分析,揭示了每一次创新如何解决短沟道效应等关键挑战,推动芯片性能提升。特别关注GAAFET作为最新技术突破的架构特点和性能优势。 阅读详情

相关推荐

科研党必备:Zotero+Deepseek 打造AI文献阅读助手(附详细插件配置指南)

本文详细介绍了如何利用Zotero和Deepseek打造AI文献阅读助手,提升科研效率。从Zotero基础安装到中文文献处理插件茉莉花的配置,再到Deepseek API的集成与模型选择策略,全面覆盖了AI辅助阅读的关键环节。特别适合需要高效管理海量文献的科研工作者,显著提升文献筛选和分析速度。

backprop5master的博客 425

火星人

题目 直接使用next_permutation函数即可,next_permutation(num,num+n)函数是对数组num中的前n个元素进行全排列,同时并改变num数组的值。 题解

m0_51267207的博客 364

一本集成电路静态时序设计经典之作(可下载)

本书全面深入探讨集成电路设计中关键技术的专著,涵盖了从基础知识到高级应用的各个方面。本书详细介绍了集成电路的发展历程、**静态时序分析的重要性、基本时序模型、时序信息库文件的构建、时序约束的设置、串扰噪声的影响及其控制方法**,并通过实战案例展示了如何进行有效的时序分析和优化。

nuoweishizi的博客 852

火星人(NOIP)

没有

2301_76869282的博客 229

网工最容易搞混的三个概念:防火墙、网闸、堡垒机,一文让你轻松搞明白。

网闸的作用可以简单概括为:在两个或多个不同安全级别的网络(如内网和外网、普通网与高安全网、受限网与互联网)之间建立一个严格隔离、信息流转的安全桥梁。它的核心任务是实现数据安全传输与隔离,避免网络之间的直接连接带来的安全隐患。数据传输安全:网闸保证数据从一个网络到另一个网络时,能够进行审查、过滤和转换,防止恶意数据或非法信息被传入内部网络或外部泄露。高安全性隔离:网闸常常用于企业的内外网隔离、军事网络、政府机关等对数据隔离要求极高的环境。

HWP18612324139的博客 3637

Hermes深入理解及源码解析(二):Hermes的记忆机制

源码位置:tools/memory_tool.py存储内容为两个文件,放在 ~/.hermes/memories/:MEMORY.md:Agent 自己的笔记(环境事实、项目约定、工具坑、学到的东西)—— 上限 2200 字符USER.md:关于用户的画像(角色、偏好、沟通风格)—— 上限 1375 字符作为一个独立的工具注册在系统中(为了让智能体正确使用它,System Prompt()中明确下达了禁令存储目标存储位置数据类型持久偏好/事实MEMORY.md我是谁、我喜欢什么、环境配置。

qq_41984117的博客 561

洛谷P1088 [NOIP2004 普及组] 火星人

传送门:https://www.luogu.com.cn/problem/P1088 一个全排列问题,可以把洛谷P1706写了再来写。 P1706:https://www.luogu.com.cn/problem/P1706 看到题目的我的第一反应就是DFS,模拟全排列的过程,然后找到火星人给的排列顺序,然后接着往下找M个全排列就能找到答案。但是题目的数据开到10000,很明显这样的做法会超时。所以不能去慢慢找火星人给的顺序,应该是要在极短的时间内就锁定该排列在整个搜索过程中的位置,然后...

Study_Study_X的博客 1248

2. Android_逆向的历史与发展

学完本节,希望你能够:了解 Android 逆向工程的发展历程,从早期 APK 破解到现代应用保护;入门先把这几类「在干啥」搞清楚,后面学脱壳、反反调试会顺很多。(反编译 APK 得到的类汇编代码,相当于程序的「菜谱」)就能绕过验证,到后来混淆、加固、反调试一起上,逆向难度越来越高。(第三节 什么是 CPU 指令集),帮你搞清楚「反汇编看到的那些指令」是从哪来的、和 Android 逆向有啥关系。有必要——先搞清「没加固时怎么玩」,再学脱壳和对抗,思路才顺。读起来费劲,但逻辑还在,耐心一点还能跟。

长沙火山 1391

NOIP2004普及组 火星人

题面来自洛谷P1088火星人,有修改。

zth413021的博客 145

微信小程序 - 最新详细实现跳转打开第三方网站方法流程及示例代码,在小程序内直接打开H5页面或微信公众号文章后台业务域名配置及下载校验文件上传服务器,嵌入外部网站跳转第三方h5网页(详细配置及代码)

微信小程序,打开第三方网站,放校验文件,怎么配置业务域名,后台配置,怎么打开外部没有关联的网站,小程序直接打开公众号文章,指定页面,跳转第三方url,跳转到外部网站,小程序跳转到任意外部网页,网站链接,跳转到其他网页(外部链接),小程序嵌入外部h5链接,校验文件怎么放到对方服务器上,要跳转到网站没权限放过去,校验文件验证域名,把校验文件放到对面网站,别人的服务器也打不开没权限怎么放呢,勾选不校验合法域名,txt,打不开别人的网页怎么办,真机调试打不开,无法跳转,有什么其他办法不放校验文件吗,别人不可能同意,

🏆 前端领域优质创作者 1万+

AI摄影师:自动构图与修图算法设计

AI摄影师:自动构图与修图算法设计​ ,人工智能,计算机视觉,大模型,AI,AI 摄影师的核心能力体现在两方面:自动构图(通过算法优化画面元素布局)与智能修图(自动调整光影、色彩、细节)。例如,手机摄影中的 “AI 构图建议” 功能可实时框选最佳拍摄区域,修图软件中的 “一键增强” 能在 0.1 秒内完成专业级调色,这些都依赖于计算机视觉与深度学习的深度融合。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 16万+

洛谷[P1088 火星人] {暴力枚举} 奋斗的珂珂~

洛谷[P1088 火星人] {暴力枚举} 题目描述 人类终于登上了火星的土地并且见到了神秘的火星人。人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字交流的方法。这种交流方法是这样的,首先,火星人把一个非常大的数字告诉人类科学家,科学家破解这个数字的含义后,再把一个很小的数字加到这个大数上面,把结果告诉火星人,作为人类的回答。 火星人用一种非常简单的方式来表示数字――掰手指。火星人只有一只手,但这只手上有成千上万的手指,这些手指排成一列,分别编号为1,2,3…。火星人的任意两根手指都能随意交

cmk_chy的博客 288

基于 Simulink 的三相四线制整流器在三相不平衡负载下的中点电位平衡控制实战教程

本文为三相四线制整流器在中点电位不平衡时的Simulink仿真教程。首先分析中点电位漂移的电荷不平衡机理,提出零序电压注入控制策略。详细演示建模步骤:搭建三相四线制主电路,构建中点平衡控制算法(含MATLAB函数代码),实现控制信号叠加与PWM生成。通过对比仿真验证控制效果,并给出零序电压限幅、中性线电感影响等工程建议。该方案能有效抑制三相不平衡负载下的中点电位波动,保证系统稳定运行。

xiaoheshang_123的博客 50

洛谷P1088火星人 (全排列问题)sort的理解

洛谷P1088火星人 (全排列问题) AC代码: #include<iostream> #include<cstdio> #include<algorithm> using namespace std; int s[10001]; int main() { int n, m; int step = 0; cin >> n >> m; for (int i = 1; i <= n; i++)cin >> s[i]; whi

weixin_50547586的博客 419

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

洛谷P1088 火星人 题解(搜索)

如果把五根手指――拇指、食指、中指、无名指和小指分别编号为 1,2,3,4 和 5,当它们按正常顺序排列时,形成了 5 位数 12345,当你交换无名指和小指的位置时,会形成 5 位数 12354,当你把五个手指的顺序完全颠倒时,会形成 54321,在所有能够形成的 120个 5 位数中,12345 最小,它表示 1;这种交流方法是这样的,首先,火星人把一个非常大的数字告诉人类科学家,科学家破解这个数字的含义后,再把一个很小的数字加到这个大数上面,把结果告诉火星人,作为人类的回答。

qq_37574334的博客 1122

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

洛谷P1088 火星人

如果把五根手指――拇指、食指、中指、无名指和小指分别编号为 1,2,3,4 和 5,当它们按正常顺序排列时,形成了 5 位数 12345,当你交换无名指和小指的位置时,会形成 5 位数 12354,当你把五个手指的顺序完全颠倒时,会形成 54321,在所有能够形成的 120 个 5 位数中,12345 最小,它表示 1;这种交流方法是这样的,首先,火星人把一个非常大的数字告诉人类科学家,科学家破解这个数字的含义后,再把一个很小的数字加到这个大数上面,把结果告诉火星人,作为人类的回答。

咚咚轩的博客 404

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

洛谷P1088 [NOIP2004 普及组] 火星人-Java朴素解法

import java.io.; import java.util.; public class Main { public static void main(String[] args) throws IOException { BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); StreamTokenizer st=new StreamTokenizer(br); PrintWriter pr=new Print

qq_47373183的博客 800

洛谷p1088 火星人

猪猪 Hanke 特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke 吃鸡很特别,为什么特别呢?因为他有 10 种配料(芥末、孜然等),每种配料可以放 1 到 3 克,任意烤鸡的美味程度为所有配料质量之和。现在, Hanke 想要知道,如果给你一个美味程度 n ,请输出这 10 种配料的所有搭配方案。第二行至结束,10 个数,表示每种配料所放的质量,按字典序排列。如果没有符合要求的方法,就只要在第一行输出一个 0。对于 100% 的数据,n≤5000。一个正整数 n,表示美味程度。

2301_81604813的博客 374

洛谷 P1088 火星人

(使序列增大),且是比 i - 1大的数中最小的(只增大一点点):对应findmin()+1的操作即为改变排序,使新序列刚好比原序列大一点点(不能有大小在二者之间的序列)(4)将 i - 1后面的数( i 到 N)升序排列:对应bubblesort()(2)从 i - 1 后面的数( i 到 N)中 找比 i - 1大的数。(1)从后往前找第一个顺序的数:对应 bigger()的if判断,(3)交换 i - 1 与(2)中找到的数:对应swap()因为只改变个位、十位等,该序列增加的最少,所以从后开始找。

Eternal_ZCL的博客 462

洛谷普及练习场——P1088 火星人

这道题吧,我刚刚看到题目是百思不得其解,后来无奈去看了看题解,看到了一个大佬用十几行完成了这个题目,然后!就被打开了新世界的大门…… 题目在这里~ P1088 火星人 在大佬的代码里面我看到了一个以前没见过的函数,就是next_permutation,我麻溜地去查了一下,发现这是STL里面的全排列函数:next_permutation函数将按字母表顺序生成给定序列的下一个较大的排列,直到整个序列为...

weixin_43985299的博客 501

洛谷试炼场-简单数学问题-P1088 火星人

洛谷试炼场-简单数学问题 A--P1088 火星人 Description 人类终于登上了火星的土地并且见到了神秘的火星人。人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字交流的方法。这种交流方法是这样的,首先,火星人把一个非常大的数字告诉人类科学家,科学家破解这个数字的含义后,再把一个很小的数字加到这个大数上面,把结果告诉火星人,作为人类的回答。 火星人用一种非常简单的方式来表...

weixin_33705053的博客 364

洛谷P1088 [NOIP 2004 普及组] 火星人

人类终于登上了火星的土地并且见到了神秘的火星人。人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字交流的方法。这种交流方法是这样的,首先,火星人把一个非常大的数字告诉人类科学家,科学家破解这个数字的含义后,再把一个很小的数字加到这个大数上面,把结果告诉火星人,作为人类的回答。火星人用一种非常简单的方式来表示数字――掰手指。火星人只有一只手,但这只手上有成千上万的手指,这些手指排成一列,分别编号为123⋯。火星人的任意两根手指都能随意交换位置,他们就是通过这方法计数的。

tonman7797的博客 927

洛谷 P1088 火星人 全排列函数的使用

洛谷 P1088 火星人 全排列函数的使用 思路: 求一个序列之后的第m个全排列。 也是第一次用next_permutaion函数 orz~ 代码如下: #include<iostream> #include<algorithm> #include<string> #include<stdio.h> using namespace std; int...

化身孤岛的鲸o的博客 382
上一篇: 洛谷P2089烤鸡
下一篇: 洛谷P2036PERKET
已是向前
博客等级 码龄4年 112粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值