问题 A: 一排里的位置交换

题目描述

体育课上,老师把一排里的两个身高不同的同学的位置交换了一下以方便安排分组训练。你能编程模拟这个过程吗?

输入

第一行是自然数n(n小于100),表示有n个数,第二行是n个表示身高的数据,第三行是要交换的两个同学的序号(按左起从1开始依次排序)。

输出

交换位置后的一排身高值。中间用空格间隔。

样例输入

5
152 155 120 145 160
2 5

样例输出

152 160 120 145 155
#include<bits/stdc++.h>
using namespace std;
const int maxn=201;typedef struct{int date[maxn];int length;
}List;
List *li;
void cs(List* &li)
{li=(List*)malloc(sizeof(List));li->length=0;
}
void creat(List* &li,int a[],int m,int n,int l)
{int i=0,k=1;li=(List*)malloc(sizeof(List));for(int i=1;i<=n;i++){if(i==m) li->date[k]=a[l];else if(i==l) li->date[k]=a[m];else li->date[k]=a[i];k++;}li->length=k;
}
void sc(List* &li)
{for(int i=1;i<li->length;i++){cout<<li->date[i];if(i!=li->length-1) cout<<" ";}
}
int main()
{int n;cin>>n;int a[205];for(int i=1;i<=n;i++){cin>>a[i];}List *li;int m,l;cin>>m>>l;creat(li,a,m,n,l);sc(li);
}

问题 G: 离队

题目描述

体育课上,班上的同学排成了一排,结果有个同学突然感觉不适,需要去医院,就离队了,你能编程模拟离队后的状态吗?

输入

第一行是整数n(n<100),第二行有n个整数,第三行是k,表示从左开始第k个离队。

输出

输出离队后的数字序列。

样例输入

5
120 125 135 126 145
3

样例输出

120 125 126 145
#include<bits/stdc++.h>
using namespace std;
const int maxn=201;typedef struct{int date[maxn];int length;
}List;
List *li;
void cs(List* &li)
{li=(List*)malloc(sizeof(List));li->length=0;
}
void creat(List* &li,int a[],int m,int n)
{int i=0,k=1;li=(List*)malloc(sizeof(List));for(int i=1;i<=n;i++){if(i!=m) {li->date[k]=a[i];k++;}}li->length=k;
}
void sc(List* &li)
{for(int i=1;i<li->length;i++){cout<<li->date[i];if(i!=li->length-1) cout<<" ";}
}
int main()
{int n;cin>>n;int a[205];for(int i=1;i<=n;i++){cin>>a[i];}List *li;int m;cin>>m;creat(li,a,m,n);sc(li);
}

问题 H: 入队

题目描述

体育课上,上课铃响后,大家排成了一排,结果有一个同学迟到了,老师让他插在这一排的某个位置,你能编程模拟这个过程吗?

输入

第一行是整数n(n<100),第二行n个整数,第三行是整数m和要插入的位置k(位置从左往右依次从1排序)。

输出

入队后的n+1个数据序列。

样例输入

5
123 125 128 121 145
136 2

样例输出

123 136 125 128 121 145

提交

#include<bits/stdc++.h>
using namespace std;
const int maxn=201;typedef struct{int date[maxn];int length;
}List;
List *li;
void cs(List* &li)
{li=(List*)malloc(sizeof(List));li->length=0;
}
void creat(List* &li,int a[],int m,int n,int l)
{int i=0,k=1;li=(List*)malloc(sizeof(List));for(int i=1;i<=n;i++){if(i<l)li->date[k]=a[i];else if(i==l) {li->date[k]=m;}else li->date[k]=a[i-1];k++;}li->length=k;
}
void sc(List* &li)
{for(int i=1;i<li->length;i++){cout<<li->date[i];if(i!=li->length-1) cout<<" ";}
}
int main()
{int n;cin>>n;int a[205];for(int i=1;i<=n;i++){cin>>a[i];}List *li;int m,l;cin>>m>>l;n=n+1;creat(li,a,m,n,l);sc(li);
}

问题 B: 围成圈

题目描述

假如有一次班里组织户外活动,同学们随机围坐成一圈做游戏,每个同学都记住了左右同学的编号,活动结束后,老师想让你帮忙复原当时大家坐的位置,你能通过每个同学记录的左右同学的编号,把当时大家坐的一圈情况复原吗?

输入

第一行是人数n(n<100)。从第二行开始n行,分别表示1-n编号的同学左右两个同学的编号。最后一行某个同学的编号K。

输出

围坐的这个圈里,从第K个同学开始顺时针的序列。

样例输入

5
4 5
5 3
2 4
3 1
1 2
3

样例输出

3 2 5 1 4
#include<bits/stdc++.h>
using namespace std;
int main()
{int n;cin>>n;int a[n],b[n];for(int i=1;i<=n;i++){cin>>a[i]>>b[i];}int k;cin>>k;for(int i=1;i<=n;i++){cout<<k;if(i!=n) cout<<" ";k=a[k];}
}

问题 C: 十进制整数转二进制

题目描述

二进制是计算机运算的基础,给你一个十进制整数,你能编程实现转二进制吗?

输入

第一行n,表示接着下边有n个十进制整数,每个占一行。

输出

对应每个十进制整数输出相应二进制数占一行。

样例输入

2
5
16

样例输出

101
10000
#include<bits/stdc++.h>
using namespace std;
void er(int n)
{if(n/2>0){er(n/2);}printf("%d",n%2);
}
int main()
{int m;cin>>m;int a[m];for(int i=0;i<m;i++){cin>>a[i];er(a[i]);if(i!=m-1)cout<<endl;}
}

问题 D: 进出栈

题目描述

设栈S的初始状态为空,元素a, b, c, d, e, f, g 依次入栈,给你一个出栈序列,请编程判断出栈序列是否正确。

输入

占一行,为出栈序列。

输出

如果出栈学列是可能的,输出True,否则输出False。

样例输入

a b c d e f g

样例输出

True
#include<bits/stdc++.h>
using namespace std;
char dc[]="abcdefg";
int main()
{char a[7];stack<char>b;for(int i=0;i<7;i++){cin>>a[i];}int k=0;for(int i=0;i<7;i++){b.push(dc[i]);while(b.top()==a[k]){b.pop();k++;if(b.size()==0) break;}}if(b.empty()) cout<<"True";else cout<<"False";
}

问题 E: 栈容量

题目描述

设栈S的初始状态为空,元素a,b,c,d,e,f,g依次入栈,出栈顺序为b,d,c,f,e,a,g那么栈容量至少应该是3。如果任意给你一个出栈序列,你能编程判断相应的栈容量至少是多少吗?

输入

元素a,b,c,d,e,f,g依次入栈情况下的一种出栈序列。

输出

对应出栈序列的栈容量至少是多少。

样例输入

b d c f e a g

样例输出

3
#include<bits/stdc++.h>
using namespace std;
char dc[]="abcdefg";
int main()
{char a[7];stack<char>b;for(int i=0;i<7;i++){cin>>a[i];}int k=0,sum=0,max=0;for(int i=0;i<7;i++){b.push(dc[i]);sum++;if(sum>max){max=sum;}while(b.top()==a[k]){b.pop();sum--;k++;if(b.size()==0) break;}}cout<<max;}

问题 F: 自创语言

题目描述

学了一段英语课之后,小名同学发现英语单词就是26个字母中若干个组合在一起的,于是他想自己也创立一种语言,为了简化单词,他计划只选26个小写字母的前n个符号构造长度也为n个符号的单词,构造好单词后,先要编写个词典,给每个单词有个解释以便人们学习他自创的语言。你能编程帮助按字典序输出所有长度为n的单词吗?

输入

占一行,为整数n(n<26)。

输出

所有由前n个符号构造长度也为n个符号的单词,按字典序每行输出一个单词。

样例输入

2

样例输出

aa
ab
ba
bb

【d了一下。按序搜完再倒回来就。老是记不清喜欢写成0orz。】

#include<bits/stdc++.h>
using namespace std;
const int maxn=201;
char dc[27]={'0','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
char dc1[27];
int n;
void dfs(int m)
{if(m==n+1){for(int i=1;i<=n;i++){cout<<dc1[i];}cout<<endl;}else{for(int i=1;i<=n;i++){dc1[m++]=dc[i];dfs(m);m--;}}
}
int main()
{cin>>n;dfs(1);
}

矿 第一次数据结构实验相关推荐

  1. 桂电七院数据结构实验报告一

    顺序表的基本操作 实验内容与步骤 实现顺序表上的插入.删除等操作.调试程序并对相应的输出作出分析:修改输入数据,预期输出并验证输出的结果.加深对有关算法的理解. 步骤: 第一步:定义顺序表的存储结构. ...

  2. 数据结构实验之二叉树五:层序遍历 // oj3344 队列+二叉树 // 先序 --层次

    原题链接:oj3344 数据结构实验之二叉树五:层序遍历 Description 已知一个按先序输入的字符序列,如abd,eg,cf,(其中,表示空结点).请建立二叉树并求二叉树的层次遍历序列. In ...

  3. 数据结构实验---最短路径C实现附带及简单界面

    数据结构实验-最短路径C实现附带及简单界面 前言: 最短路径算法是图论中比较重要的算法之一,我们在课本中学到的最短路径算法有两种,分别为Dijkstra 算法 和 Floyd 算法,本文中采用的是 D ...

  4. 数据结构实验报告—栈和队列

    作者:命运之光 专栏:数据结构 目录 实验内容 实验三 栈和队列 一.需求分析 二.概要设计 三.详细设计 四.调试分析 五.测试结果 附录:源程序代码(带注释) 实验内容 实验三栈和队列 实验环境: ...

  5. 数据结构实验:内部排序算法的性能分析

    文章目录 前言 一.问题描述 二.问题分析 三.实验结果及分析 (1)实验数据描述 (2)实验结果 (3)性能分析 四.源代码 前言 记录下本学期的数据结构实验 本实验主要集中于比较几种内部排序算法 ...

  6. 数据结构实验入门:学生成绩统计排序系统

    笔者最近在学校开始学习数据结构,这门课程作为计算机专业的最核心课程需要重点掌握,下面是数据结构实验课上的第一次作业内容,笔者在这里分享一下自己的想法和见解 一.实验内容 设计程序实现统计一个班的学生成 ...

  7. 数据结构实验之链表五:单链表的拆分-sdut

    数据结构实验之链表五:单链表的拆分 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 输入N个 ...

  8. SDUT OJ 数据结构实验之排序一:一趟快排

    数据结构实验之排序一:一趟快排 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Descrip ...

  9. SDUT-2449_数据结构实验之栈与队列十:走迷宫

    数据结构实验之栈与队列十:走迷宫 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 一个由n * m 个格子组成的迷宫,起 ...

最新文章

  1. 如何允许计算机远程桌面连接,远程桌面 - 允许访问你的电脑
  2. 起一个数的平方根_使用二分法计算一个数的算术平方根
  3. java如何判断打印是否成功_如何验证Zebra打印机是否使用ZPL和C#成功打印(或能够检测到错误)?...
  4. 图像特征提取:图像的矩特征
  5. POJ3104 Drying [二分]
  6. C# 获取并判断操作系统版本,解决Win10、 Windows Server 2012 R2 读取失败的方案
  7. anaconda使用记录
  8. JAR——pinyin4j-2.5.0
  9. C++11标准之NULL与nullptr比较
  10. 虚点连边 分层最短路
  11. Atitit 图片 验证码生成attilax总结
  12. tewa600agm是千兆吗_请问电信天翼网关光纤猫超级用户 型号tewa-600aem/tewa600agm
  13. android 6 root权限,「经验」android手机怎么开启Root权限
  14. 原生js实现简易的可旋转伸缩连线效果代码
  15. windows11修改开机密码为空解决方案
  16. react-navigation 6.x 学习(3)
  17. java lang arithmetic_java.lang.ArithmeticException: Rounding necessary
  18. 阅读《精通Python爬虫框架Scrapy》
  19. 环信IM即时通讯的简单集成
  20. 免费的远程桌面工具 Chrome Remote Desktop

热门文章

  1. docker看这一篇就够了
  2. 自动驾驶货运编队行驶介绍
  3. 浅谈安卓逆向协议(四)- ida pro - 小红书
  4. uni-app 遮罩层事件穿透解决办法catchtouchmove
  5. 为什么IM不适合直接运行在公链上?
  6. 响应式织梦模板装修装饰设计类网站
  7. 哪位仁兄在狂顶精华贴?
  8. java+ElementUI前后端分离旅游项目第七天 权限管理和图形报表
  9. yaourt下载速度太慢_加快Yaourt软件包的安装速度
  10. 保姆级教程:NobePay从注册到充值开卡全过程