题目四 艺术品

Dr.Kong设计了一件艺术品,该艺术品由N个构件堆叠而成,N个构件从高到低按层编号依次为1,2,……,N。艺术品展出后,引起了强烈的反映。Dr.Kong观察到,人们尤其对作品的高端部分评价甚多。

 

狂热的Dr.Kong一激动,对组成该艺术品的N个构件重新组合,比如:把第6层到第12层的构件搬下来,想一想,然后整体放到剩下构件的第7层下面;过一会儿,又把第2层到第9层的构件搬下来,整体放到剩下构件的第1层下面等等。于是,Dr.Kong在进行了连续若干次“搬来搬去”后,还是这N个构件,又诞生了一件新的艺术品。

 

编程:请输出新的艺术品最高十层构件的编号。

【标准输入】

第一行: N K       表示构件的总数和“搬来搬去”的总次数

第2~K+1行:A B C      表示要搬动的构件(即从第A层到第B层)整个放在第C层下面;

如果C等于0,则要搬动的构件将放到最高层。

【标准输出】

由十行组成,分别为组成新艺术品的第一层到第十层构件的编号。

【约束条件】

(1)   10≤N≤20000    1≤k≤1000

(2)   1≤A≤B≤N,      0≤C≤N-(B-A+1)

【 样  例 】

 

标准输入

标准输出

13 3

6 12 1

2 9 0

10 13 8

 

6

7

8

9

10

11

12

2

3

4

 

  数据结构的作业,我用的方法算是很笨的了,并且我也没经历过算法训练,所以代码写的很差,仅供参考。

  整体思路就是用链表保存艺术品,节点定义为:

  

typedef struct Lnode{ int num;Lnode* next;
}node,*LinkList;

  num表示艺术品编号。

  整体代码如下:

  1 /*
  2 zp
  3 zzti
  4 2012/10/06
  5 */
  6 #include<iostream>
  7 using namespace std;
  8 typedef struct Lnode{
  9     int num;  //艺术品编号
 10     Lnode* next;
 11 }node,*LinkList;
 12 void CreatList(LinkList& l,int n)  //初始化链表,给所有节点赋值
 13 {
 14     node* p=new node;
 15     p->next=NULL;
 16     p->num=0;
 17     l=p;
 18     for(int i=0;i<n;i++)
 19     {
 20         node* q=new node;
 21         q->num=i+1;
 22         q->next=NULL;
 23         p->next=q;
 24         p=p->next;
 25     }
 26 }
 27 
 28 void Move(LinkList& l,int a ,int b,int c){
 29     node* p=l; 
 30     node* headpre,*tailpre;  //a的前一个位置和b的前一个位置
 31     int i=0;
 32     //第一次遍历,找出ab的位置
 33     while(p->next!=NULL)
 34     {
 35         i++;
 36         if(i==a)
 37         {
 38             headpre=p;   
 39         }
 40         if(i==b)
 41         {
 42             tailpre=p;;
 43         }
 44         p=p->next;
 45     }
 46     node* head=headpre->next; //a的位置
 47     node* tail=tailpre->next;  //b的位置
 48     headpre->next=tail->next;
 49 
 50     //第二次遍历,将抽出的链表重新插入到合适的位置
 51     p=l;i=0;
 52     while(p->next)
 53     {
 54         if(i==c)
 55         {
 56             node* q=p->next;  //将链表插入
 57             p->next=head;
 58             tail->next=q;
 59         }
 60         i++;p=p->next;
 61     }
 62 }
 63 
 64 void PrRes(LinkList l) { //PrintResult
 65     int i=0;
 66     node* p=l->next;
 67     while(i<10)
 68     {
 69         cout<<p->num<<endl;
 70         i++;
 71         p=p->next;
 72     }
 73 }
 74 
 75 
 76 int main()
 77 {
 78     
 79     int n,k,a,b,c,t1,t2,t3;
 80     cout<<"请输入n,k:"<<endl;
 81     do{
 82         cin>>t1>>t2;
 83         if(t1<10||t1>20000||t2<1||t2>>1000)
 84         {
 85             cout<<"输入数据超过规定范围,请重新输入!"<<endl;
 86         }
 87         else break;
 88         
 89     }while(1);
 90     n=t1;k=t2;
 91     LinkList l;
 92     CreatList(l,n);
 93     for(int i=0;i<k;i++)
 94     {
 95         cout<<"请输入要搬运的范围以及放置位置:"<<endl;
 96         do{
 97             cin>>t1>>t2>>t3;
 98             if(t1<1||t1>n||t2<1||t2>n||t1>t2||t3<0||t3>(n-(t2-t1+1)))
 99             {
100                 cout<<"输入数据有误,请重新输入!"<<endl;
101             }
102             else break;
103         }while(1);
104         a=t1,b=t2,c=t3;
105         Move(l,a,b,c);
106     }
107     PrRes(l);
108     return 0;
109 }
110     

 

 

转载于:https://www.cnblogs.com/csonezp/archive/2012/10/06/2712685.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/401205.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何将docker 镜像上传到docker hub仓库

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 如何将docker 镜像上传到docker hub仓库 目录* 如何将docker 镜像上传到docker hub仓库 背景 1.注册docker hub账号 2.…

C# 类(14) 事件

using System; using System.Collections.Generic; using System.Linq; using System.Text;namespace ConsoleApplication1 {//先在外面定义一个类.class MyClass{//委托是事件的前提,所以先定义一个委托public delegate void Mydelagate(int i);// 接着定义事件. public event…

ThinkPHP框架 _ 学习3

【路由解析】 通过url地址get参数找到指定的控制器&#xff0c;并进行对应方法调用请求 http://网址/index.php?m模块名称&c控制器&a方法 以上url地址信息代码不够优雅、不安全。 tp框架url地址可以由以下四种 http://网址/index.php?mXX&cXX&aXX 基本get模…

The slave I/O thread stops(equal MySQL server ids)

在学习replication时遇到了如下问题&#xff1a;显然看到Slave_IO_Running 为NO 表示有问题&#xff1b;到日志里查看&#xff0c;错误如下&#xff1a;position 98100121 17:09:03 [ERROR] The slave I/O thread stops because master and slave have equal MySQL server ids;…

pytest配置文件pytest.ini

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 说明&#xff1a; pytest.ini是pytest的全局配置文件&#xff0c;一般放在项目的根目录下是一个固定的文件-pytest.ini可以…

函数声明、引用

1.函数的声明 function 函数名(形参1&#xff0c;形参2&#xff0c;形参3....){ 函数体&#xff1b; return; } 2.函数的调用方式&#xff1a; func(1,2,3); 函数名(参数1&#xff0c;参数2&#xff0c;参数3); 3.return:&#xff0c;并返回一个函…

基于积分墙盈利模式的APP架构思考

基于积分墙盈利模式的APP架构思考from: http://kuailiyu.cyzone.cn/article/4156.html个人感言&#xff1a;一款小游戏好不容易辛辛苦苦开发出来&#xff0c;但是在后期如何不注重推荐&#xff0c;其下场可想而知。而个人游戏开发者的产品很难实现应用内付费集成&#xff0c;技…

flash中的渐变滤镜GradientGlowFilter

可使用 GradientGlowFilter 类对显示对象应用渐变发光效果。 渐变发光是一种非常逼真的发光效果&#xff0c;您可以控制颜色渐变。 可以在对象的内缘或外缘的周围或者对象的顶部应用渐变发光。 您可以将滤镜应用于任何显示对象&#xff08;即&#xff0c;从 DisplayObject 类继…

【死磕NIO】— 探索 SocketChannel 的核心原理

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 大家好&#xff0c;我是大明哥&#xff0c;一个专注于【死磕 Java】系列创作的程序员。 【死磕 Java 】系列为作者「chenssy…

RSync实现文件备份同步

转自&#xff1a;http://www.mike.org.cn/blog/index.php?loadread&id639###pp0 [rsync实现网站的备份&#xff0c;文件的同步&#xff0c;不同系统的文件的同步&#xff0c;如果是windows的话&#xff0c;需要windows版本cwrsync] 一、什么是rsync rsync&#xff0c;remo…

session的存储方式

1、保存在IIS进程中 2、保存在StateServer上 3、保存在SQL Server数据库中 转载于:https://www.cnblogs.com/dashi/archive/2012/10/10/4034799.html

PixiJS - 基于 WebGL 的超快 HTML5 2D 渲染引擎

Pixi.js 是一个开源的HTML5 2D 渲染引擎&#xff0c;使用 WebGL 实现&#xff0c;不支持的浏览器会自动降低到 Canvas 实现。PixiJS 的目标是提供一个快速且轻量级的2D库&#xff0c;并能兼容所有设备。此外&#xff0c;让开发者无需了解WebGL&#xff0c;就可以感受到硬件加速…

腾讯的老照片修复算法,我把它搬到网上,随便玩

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 大家好&#xff0c;之前向大家介绍并跑通了腾讯开源的老照片修复算法&#xff08;AI 黑科技&#xff0c;老照片修复&#xf…

linux下查看文件及目录个数

linux下查看文件及目录个数1、查看当前文件和目录总数&#xff08;不包括子目录&#xff09;&#xff1a;ls -l | wc -l 2、查看当前目录下文件个数(不包括子目录)&#xff1a;ls -l |grep "^-"|wc -l 查看当前目录下文件个数(包括子目录)ls -lR |grep "^d"…

java的事务类型及定义

转载:什么是事务:首先,说说什么事务。我认为事务&#xff0c;就是一组操作数据库的动作集合。事务是现代数据库理论中的核心概念之一。如果一组处理步骤或者全部发生或者一步也不执行&#xff0c;我们称该组处理步骤为一个事务。当所有的步骤像一个操作一样被完整地执行&#x…

驱动开发 环境搭建(VS2008+WDK+DDKWzard)

这篇文章比较适合初学驱动&#xff0c;搭建一个自动化的环境对于开发来说是事半功倍啊&#xff1b; 开发驱动&#xff0c;首先就是搭建开发的环境。既然是开发windows下的驱动程序&#xff0c;那MS的开发工具是一定要的。现在vs都到2010了&#xff0c;所以&#xff0c;也不能总…

戏说领域驱动设计(十八)——内验

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475   验证在我们现实的生活中非常常见&#xff0c;比如您找工作得先整个面试验证你的能力是否靠谱&#xff1b;找对象得先验证…

从Zabbix数据库中提取内存采集的数据,做内存使用率计算

背景需求很简单&#xff0c;分析所有的设备的内存使用率&#xff0c;看那些设备的内存不够用是否需要加内存。。。下面的脚本逻辑&#xff0c;就是通过提取zabbix数据库中的hostid&#xff0c;在提取itemid。。然后通过item name过滤提取趋势数据&#xff0c;获取一天中最大的内…

Annotation版本的HelloWorld

hiberante 的 annotation历史&#xff1a; 在hibernate3以后&#xff0c;开始支持Annotation; 先有hiberante再有JPA&#xff0c;有了JPA标准之后&#xff0c;hibernate写了Annotation来支持JPA&#xff1b;所以 hibernate的annotation是JPA标准之下的&#xff0c;一般都直接用…

自己用java实现飞鸽传书 2 - 实现文件传输

第二步&#xff1a;实现文件传递。 上一步只是从服务端传递了一个字符串到客户端&#xff0c;这次需要对代码进行调整&#xff0c;实现从服务端获取文件&#xff0c;在客户端将文件存入目标地址。 调整后的代码&#xff1a; 服务端&#xff1a; import java.io.DataInputStream…