翻牌游戏
有N张写有数据的牌, 从上到下放成一堆,每次从上面取一张输出,再从上面取一张放回这堆牌的下面。重复这个过程,直到取完,发现取出牌上的数字恰巧是1,2,3...,N,问原先N张牌上的数是什么?
输入格式
第一行1个正整数:N,范围在[1,10000]。
输出格式
第一行1个正整数:N,范围在[1,10000]。
输入/输出例子1
输入:
4
输出:
1 3 2 4
设原来的牌:a1,a2,a3,a4
输出的牌: a1,a3,a2,a4 (即1,2,3,4)
问题变成了:知道输出序列,按照下标排序求输入序列
->离散化
#include<bits/stdc++.h> using namespace std; struct st{ int v,id; }; queue<st> q1; vector<st> q2; int main(){ int n; cin>>n; for(int i=1;i<=n;i++){ q1.push({0,i}); } int k=1; while(!q1.empty()){ st f=q1.front(); f.v=k++; q2.push_back(f); q1.pop(); if(!q1.empty()){ st f2=q1.front(); q1.pop(); q1.push(f2); } } sort(q2.begin(),q2.end(),[](st x,st y)->bool{ return x.id<y.id; }); for(st e:q2){ cout<<e.v<<" "; } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)