[Coursera C++程序设计] 第八周作业

编程题#1

来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)

注意: 总时间限制: 1000ms 内存限制: 65536kB

描述

下面的程序输出结果是:

1 2 6 7 8 9

请填空:

 

 

1

2

3

4

5

6

7

8

9

10

11

#include <iostream>

#include <iterator>

#include <set>

using namespace std;

int main() {

int a[] = {8,7,8,9,6,2,1};

// 在此处补充你的代码

ostream_iterator<int> o(cout," ");

copy( v.begin(),v.end(),o);

return 0;

}

 

输入

 

输出

1 2 6 7 8 9

 

样例输入

 

 

1

 

样例输出

 

 

1

1 2 6 7 8 9

 

#include <iostream> 
#include <iterator> 
#include <set> 
#include <list>
using namespace std;
int main() {
	int a[] = { 8,7,8,9,6,2,1 };
	// 在此处补充你的代码
	//list<int> v(a, a + 7);
	//v.sort();
	//v.unique();
	set<int> v(a, a + 7);
	ostream_iterator<int> o(cout, " ");
	copy(v.begin(), v.end(), o);
	return 0;
}

编程题#1 List

来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)

注意: 总时间限制: 4000ms 内存限制: 65536kB

描述

写一个程序完成以下命令:

new id ——新建一个指定编号为id的序列(id<10000)

add id num——向编号为id的序列加入整数num

merge id1 id2——合并序列id1和id2中的数,并将id2清空

unique id——去掉序列id中重复的元素

out id ——从小到大输出编号为id的序列中的元素,以空格隔开

 

输入

第一行一个数n,表示有多少个命令( n<=200000)。以后n行每行一个命令。

 

输出

按题目要求输出。

 

样例输入

 

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

16

new 1

new 2

add 1 1

add 1 2

add 1 3

add 2 1

add 2 2

add 2 3

add 2 4

out 1

out 2

merge 1 2

out 1

out 2

unique 1

out 1

 

样例输出

#include<iostream>
#include<list>
#include <iterator> 
#include<vector>
#include<string>
using namespace std;

int GetNum(string &s)//用来读取命令后面的数字的,包括id和num
{
	int pos = s.rfind(" ");//反向查找
	string num = s.substr(pos + 1, s.length() - 1 - pos);
	s.erase(pos);
	return stoi(num);//把数字字符串转换成int输出
}


int main()
{
	//以下两行是用来读取和输出测试数据的
	//freopen("in.txt", "r", stdin);
	//freopen("out.txt", "w", stdout);
	int n; 
	cin >> n;
	cin.get();//吃回车
	vector<string> command(n);//string类的vector
	string tmp;
	for (int i = 0; i < n; i++)
	{
		getline(cin, tmp);
		command[i] = tmp;
	}
	vector<list<int>> lst(10000);
	for (int i = 0; i < n; i++)//判断是否是add命令
	{
		if (command[i].at(0) == 'a')
		{
			int num = GetNum(command[i]);
			int id = GetNum(command[i]);
			lst[id - 1].push_back(num);
		}
		else if (command[i].at(0) == 'm')//判断是否是merge命令
		{
			int id2 = GetNum(command[i]);
			int id1 = GetNum(command[i]);
			lst[id1 - 1].merge(lst[id2 - 1]);
		}
		else if (command[i].at(0) == 'u')//判断是否是unique命令
		{
			int id = GetNum(command[i]);
			lst[id - 1].sort();
			lst[id - 1].unique();
		}
		else if (command[i].at(0) == 'o')//判断是否是out命令
		{
			int id = GetNum(command[i]);
			lst[id - 1].sort();

			ostream_iterator<int> o(cout, " ");
			copy(lst[id - 1].begin(), lst[id - 1].end(), o);
			cout << endl;
		}
	}
	return 0;
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++程序设计是计算机科学和软件工程中非常重要的一个领域,许多大学和在线教育平台都提供与C++相关的课程。这些课程可以帮助学习者从基础到高级掌握C++编程技能。以下是一些常见的C++程序设计相关课程: 1. 初级C++课程:这些课程主要面向初学者,介绍了C++的基本语法、变量、数据类型、运算符、流程控制语句等基础知识。学习者将通过编简单的程序来巩固所学内容。 2. 面向对象编程(OOP)课程:这些课程重点介绍面向对象编程的概念和技术,包括类、对象、封装、继承、多态等。学习者将学习如何使用C++实现面向对象的程序设计。 3. 数据结构和算法课程:这些课程讲解了常见的数据结构(如数组、链表、栈、队列、树等)和算法(如排序、搜索、图算法等),并通过C++语言实现。这些课程旨在帮助学习者理解和应用数据结构和算法来解决实际问题。 4. 高级C++课程:这些课程探讨了C++的高级主题,如模板、异常处理、多线程编程、STL(标准模板库)等。学习者将学习如何利用这些高级特性来编更高效、可维护的C++程序。 除了传统的大学课程,许多在线教育平台也提供了丰富的C++课程资源,例如Coursera、Udemy、edX等。您可以根据自己的需求和学习进度选择适合的课程。另外,参与编程社区和讨论论坛也是很好的学习方式,可以与其他学习者交流经验和解决问题。希望这些信息对您有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值