MNNUOJ 9009删除k个数

2023-11-20 14:50
文章标签 删除 个数 9009 mnnuoj

本文主要是介绍MNNUOJ 9009删除k个数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 Problem Description

有一顺序表L,请删除L中第i个元素起的连续k个元素。删除成功后,若顺序表非空,则输出删除后的顺序表;若顺序表为空,则不输出任何信息;若位置i有误或无法找到连续k个元素,则输出“data error”。

 Input

有多组数据,每组第一行分别表示表长n(0<n<=20)、位置i和k值(k>=0);第二行表示顺序表的各元素。

 Output

删除成功后,若顺序表非空,则输出删除后的顺序表,每两个元素之间用一个空格分隔;若顺序表为空,则不输出任何信息;若位置i有误或无法找到连续k个元素,则输出“data error”。

 Sample Input

5 2 3
1 2 3 4 5

 Sample Output

1 5

 Hints

 
不管数据是否有效,都要完整的读入表的数据。

方法一:顺序表

#include<iostream>
#include<stdio.h>
const int MAX=21;
using namespace std;
class SeqList {
public :int length;int array[MAX];bool flag;
public:SeqList() {length=0;}SeqList(int* a,int n) {for(int i=0; i<n; i++) {array[i]=a[i];}length=n;}void Print() {for(int i=0; i<length; i++) {if(i)cout<<" ";cout<<array[i];}cout<<endl;}void Delete(int index,int k) {for(int loop=0; loop<k; loop++) {for(int i=index-1; i<length-1; i++) {array[i]=array[i+1];}length--;}}};
int main() {int n,index,k;while(cin>>n>>index>>k) {int* a=new int[n];for(int i=0; i<n; i++)cin>>a[i];SeqList list(a,n);if(list.length==0)continue;else if(index<=0||index>n||(index+k-1)>n) {cout<<"data error"<<endl;}else{
list.Delete(index,k);list.Print();}delete a;}return 0;
}

 

方法二:单链表

#include<iostream>
#include<stdio.h>
const int MAX=21;
using namespace std;
class List {
public:struct node {int data;node* next;};node* head;
public:List() {head=new node;head->next=NULL;}void Creat(int n) {node* r=head;for(int i=0; i<n; i++) {int num;cin>>num;node* s=new node;s->data=num;r->next=s;r=s;}r->next=NULL;}void Print() {node* p=head->next;if(p) {while(p->next) {cout<<p->data<<" ";p=p->next;}cout<<p->data<<endl;}}void Delete(int index,int k){int count=0;node* p=head;while(p->next&&++count<index){p=p->next;}while(p->next&&count++<k+index){node* s=p->next;p->next=s->next;delete s;}}
};
int main() {int n,index,k;while(cin>>n>>index>>k){List list;list.Creat(n);if(index<=0||index>n||(k+index-1)>n){cout<<"data error"<<endl;}else {list.Delete(index,k);list.Print();}}
return 0;
}

 

这篇关于MNNUOJ 9009删除k个数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/395411

相关文章

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

spoj705( 求不相同的子串个数)

题意:求串s的不同子串的个数 解题思路:任何子串都是某个后缀的前缀,对n个后缀排序,求某个后缀的前缀的个数,减去height[i](第i个后缀与第i-1 个后缀有相同的height[i]个前缀)。 代码如下: #include<iostream>#include<algorithm>#include<stdio.h>#include<math.h>#include<cstrin

XTU 1233 n个硬币连续m个正面个数(dp)

题面: Coins Problem Description: Duoxida buys a bottle of MaiDong from a vending machine and the machine give her n coins back. She places them in a line randomly showing head face or tail face o

学习记录:js算法(二十八):删除排序链表中的重复元素、删除排序链表中的重复元素II

文章目录 删除排序链表中的重复元素我的思路解法一:循环解法二:递归 网上思路 删除排序链表中的重复元素 II我的思路网上思路 总结 删除排序链表中的重复元素 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 图一 图二 示例 1:(图一)输入:head = [1,1,2]输出:[1,2]示例 2:(图

如何恢复回收站中已删除/清空的文件

回收站清空后如何恢复已删除的文件?是否可以恢复永久删除的文件?或者最糟糕的是,如果文件直接被删除怎么办?本文将向您展示清空回收站后恢复已删除数据的最佳方法。 回收站清空后如何恢复已删除的文件? “回收站清空后我还能恢复已删除的文件吗?” 答案是肯定的,但是在这种情况下您将需要一个  回收站恢复工具 来从回收站中检索文件: 错误/永久删除回收站或任何数字存储设备中的文件 直接删除的文件/

O(n)时间内对[0..n^-1]之间的n个数排序

题目 如何在O(n)时间内,对0到n^2-1之间的n个整数进行排序 思路 把整数转换为n进制再排序,每个数有两位,每位的取值范围是[0..n-1],再进行基数排序 代码 #include <iostream>#include <cmath>using namespace std;int n, radix, length_A, digit = 2;void Print(int *A,

Linux 删除 当前下的 mysql-8.0.31 空文件夹

在Linux中,如果你想要删除当前目录下的名为mysql-8.0.31的空文件夹(即该文件夹内没有任何文件或子文件夹),你可以使用rmdir命令。但是,如果mysql-8.0.31文件夹并非完全为空(即它包含文件或子文件夹),rmdir命令会失败。 如果你的目标是删除mysql-8.0.31文件夹及其内部的所有内容(无论是否为空),你应该使用rm命令结合-r(或-R,它们是等价的)选项来递归地删

如何删除不小心上传到git远程仓库中的.idea .iml文件

如果在开始的时候不配置,gitignore文件或者文件配置不正确,初始化上传的时候就会有一些不必要的信息上传上去 如果已经存在了一些文件在git远程仓库中,如。idea,.iml文件等。 首先在项目中定义一个  .gitignore文件,简单的实例如下也可以用idea中的gitignore插件 .DS_Storeclasses/*.settings/target/.classpath

Win8下如何快速查找和删除电脑中的病毒

Win8系统如何查找和删除病毒?检查你的电脑是否存在病毒的一种快速方法是使用 Windows Defender. 此恶意软件防护随 Windows 提供,可帮助识别和删除病毒、间谍软件和其他恶意软件。   注意:如果你使用的是 Windows RT,则 Windows Defender 会始终启用,并且不能关闭。   如果你使用的是 Windows 8,则可以根据自己的喜好运行由其他

【数据结构与算法 | 灵神题单 | 删除链表篇】力扣3217, 82, 237

总结,删除链表节点问题使用到列表,哈希表,递归比较容易超时,我觉得使用计数排序比较稳,处理起来也不是很难。 1. 力扣3217:从链表中移除在数组中的节点 1.1 题目: 给你一个整数数组 nums 和一个链表的头节点 head。从链表中移除所有存在于 nums 中的节点后,返回修改后的链表的头节点。 示例 1: 输入: nums = [1,2,3], head = [1,2,3,