1-7 两个有序单链表求差集
各依次输入递增有序若干个不超过100的整数,分别建立两个递增有序单链表,分别表示集合A和集合B。设计算法求出两个集合A和B 的差集(即仅由在A中出现而不在B中出现的元素所构成的集合),并存放于A链表中。要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。然后输出求的差集的单链表。测试数据保证结果链表至少存在一个元素。
输入格式:首先输入一个整数T,表示测试数据的组数,然后是T组测试数据。每组测试数据先在第一行输入数据个数n及n个依次递增有序的不超过100的整数,再在第二行输入数据个数m及m个依次递增有序的不超过100的整数。
输出格式:对于每组测试,输出A与B的差集的单链表,每两个数据之间留一个空格。
输入样例:12345211 10 14 23 25 26 31 34 42 51 65 9010 10 41 42 46 51 58 59 60 68 975 1 2 3 4 53 3 4 5
输出样例:1214 23 25 26 31 34 65 901 2
代码:12345678910111213141516171819202122232425262728293 ...
1-2 2017Final 圆周率山
为了参加学校的社团风采展,怡山小学数学组的同学们决定画一座圆周率山,以宣传圆周率。
已知圆周率为:3.
1415926535 8979323846 2643383279 5028841971 6939937510
5820974944 5923078164 0628620899 8628034825 3421170679
8214808651 3282306647 0938446095 5058223172 5359408128
4811174502 8410270193 8521105559 6446229489 5493038196
输入格式:输入山的高度,为一个不超过10的正整数。
输出格式:以上尖下宽,左右对称的三角形形式,给出圆周率的前若干位(不含小数点)。注意:每行均以数字结尾,即数字右边无空格。
输入样例1:11
输出样例1:13
输入样例2:14
输出样例2:1234 3 141 592653589793
代码:1234567891011121314151617C++#include<bits/stdc++.h>using names ...
1-1 交换两个字符串
输入格式:字符串1字符串2
输出格式:字符串1字符串2
输入样例:在这里给出一组输入。例如:
12helloworld
输出样例:在这里给出相应的输出。例如:
12worldhello
代码:123456789101112131415C++#include<iostream>#include <string>using namespace std;int main(){ string str1; string str2; cin >> str1; cin >> str2; swap(str1,str2); cout << str1 << endl; cout << str2; return 0;}
day5 为什么很多程序员都建议使用Linux
为什么很多程序员都建议使用Linux发展历程UNIX 说到Linux,就不能提到大名鼎鼎的UNIX系统,在上世纪60年代末的时候,那时候计算机系统还是批处理的,在又大又笨的大型机器上运行,要先将程序卡片装入设备,然后等1个小时后才能取运算的结果。不仅慢,还很废纸。
于是美国电话电报公司(下面简称AT&T公司)下面的贝尔实验室联合麻省理工学院及美国通用电气公司本来是打算开发一个大型机上的多人使用、多任务、多层次的操作系统multics。但是multics这个系统步子迈得太大了,贝尔实验室认为这个项目周期长、成本高,不久就撤资了,各方也陆续退出,项目于是凉凉了。
但是贝尔实验室下面的两个研究员肯·汤普森(Ken Thompson)和丹尼斯·里奇(Dennis Ritchie)对项目关闭很失望,因为他们在这个系统上开发了一个游戏太空旅行(Space Travel),实验室的其他人员对这个游戏玩得也很上头。
于是,为了能够继续玩游戏,肯·汤普森和丹尼斯·里奇决定自己开发一个操作系统;是的,你没有看错,大神就是大神,出发点都异于常人。肯·汤普森找 ...
day4 小端序和大端序
小端序和大端序写在开头大家都知道,数据存储在内存中时,由于1字节只有8位,存储的数据范围有限,我们需要将占用多个字节的数据按照特定顺序排列存储。在存储过程中,根据实际使用场景特点,会采用不同的字节序——小端序(Little Endian)和大端序(Big Endian)。
什么是字节序字节序,又称端序或尾序(Endianness)。在计算机领域中,指电脑内存中或在数字通信链路中,占用多个字节的数据的字节排列顺序。在几乎所有的平台上,多字节对象都被存储为连续的字节序列。
小端序和大端序首先我们给出这两个字节序的定义:
小端序:将高位字节保存在内在存的高地址(低位字节在前)的方式。
大端序:将高位字节保存在内存的低地址(高位字节在前)的方式。
以存储0x12345678为例。显然他是一个四字节的数据。大端序的保存数据示意图如下:
小端序存储结果则如下:
字节序作用计算机电路先处理低位字节,效率比较高,因为计算都是从低位开始的。所以,计算机的内部处理都是小端字节序。在计算机内部,小端序被广泛应用于现代 CPU 内部存储数据;而在其他场景,比如网络传输和文件存储则使用大端序。不同CPU保 ...
day3 爆火的Chat GPT
*\ 导读****OpenAI近期发布聊天机器人模型ChatGPT,迅速出圈全网。它以对话方式进行交互。以更贴近人的对话方式与使用者互动,可以回答问题、承认错误、挑战不正确的前提、拒绝不适当的请求。高质量的回答、上瘾式的交互体验,圈内外都纷纷惊呼。
为什么有如此高的评价?理论支撑是什么?背后的技术原理是什么?待解决的问题和方案有哪些?资本怎么看待这件事?本文的目标是将这些问题详细的给大家讲清楚。
\1 ChatGPT是什么?**ChatGPT本质是一个应用在对话场景的语言模型,基于GPT3.5通过人类反馈的强化学习微调而来,能够回答后续问题、承认错误、质疑不正确的前提以及拒绝不适当的请求。首先让我们今天的主角ChatGPT来亲自介绍自己。
\1.1 让ChatGPT介绍自己**ChatGPT是什么?既然ChatGPT是语言模型,语言模型是什么?通过强化学习训练,强化学习又是什么?
\1.2 全球范围的兴起和爆发**OpenAI 11月30号发布,首先在北美、欧洲等已经引发了热烈的讨论。随后在国内开始火起来。全球用户争相晒出自己极具创意的与ChatGPT交流的成果。ChatGPT在 ...
day2 编程语言如何实现?
编程语言如何实现?今天的主题是 AST (抽象语法树),AST 听起来好像是个很新的东西,实际上我们平常用的 SQL执行器、语言编译器、解释器都在大量使用,是词法语法解析的基础,掌握了对于理解编程语言非常有帮助。
我们简单将这个词拆分抽象、语法、树,如果我们能够顺利将这个词拆分,那么我们也就掌握了其核心所在
抽象:抽象的反义词是具象,也就说明抽象的事物关注点不在于细节,而在于整体
语法:语法一组词法的表达式,具备某种指定的规则,具有某种特定的意义,比如 1+1
树:树是一种一对多的结构,通过根节点往下递生,可以存在多个子树,当然这不是我们这篇讨论的主题,但却是重点
我们接下来通过几个例子更加清楚了解一下什么是树
一、什么是树?1)算数表达式5 * 4 / 2 + 3 * 6 这是一个简单的算法运算,但是如果我们要通过树形的方式表达它的话,结果可能是以下这样:
我们通过分析这张树形图,我们可以发现有哪几个结构 ?
一部分是数字:5,4,2,3,6
一部分是操作符:*, /, +, *
我们从中抽取出了 + 符号,并将其作为该树的根节点,这个时候又可以分为左右两个子树,我们从中提 ...
day1 开发者偏爱Linux的9大理由
开发者偏爱Linux的9大理由我们日常使用的大多数设备运行的都是 Linux 或定制版本的 Linux。包括 Android 手机、平板电脑、相机、录像机、可穿戴设备、Chromebook 和其他设备。
有趣的事实:您使用的大多数互联网服务和社交媒体网站都在 Linux 上运行,因为这是最值得信赖的操作系统。
01强大的命令行
命令行有很多功能,它使您能够快速开发并自动执行日常任务。很多开发者喜欢它,正是因为它不需要鼠标或触控板。
除此以外还能使日常任务可以自动化。这可以帮助开发者专注于手头更重要的任务,并节省大量时间。Linux虽然不完美,但保持了终端的纯度。
02Linux 非常安全
因为 Linux 是开源的,由大型开发人员社区开发和维护的,所以捕获和修复安全漏洞的几率更高。此外,Windows 仍然是最受欢迎的操作系统,约占台式机和笔记本电脑市场的76.7%。因此,大多数攻击针对的都是Windows 而不是 Linux。
03对开发人员非常友好
与 Windows 用户相比,Linux 比以往任何时候都更加对用户友好。但正因为Linux 专门为开发人员提供的工具 ...
【2022暑期训练-5】7-4 工作分配问题
设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小。
输入格式输入数据的第一行有1 个正整数n (1≤n≤20)。接下来的n行,每行n个数,表示工作费用。
输出格式将计算出的最小总费用输出到屏幕。
输入样例在这里给出一组输入。例如:
1234310 2 32 3 43 4 5
输出样例在这里给出相应的输出。例如:
19
解题思路通过分析问题可知,要使用回溯算法解决该问题,可以看出此问题的解空间树这是一个典型的排列树。
采用递归回溯的方法,同样用book[ ] 进行记录,数组中的下标 i 表示第几个人,book[i]=0表示没有被分配工作;book[i]=1表示已经被分配工作。
t 表示第几份工作,排序树的层数(也就是递归的层数)代表这是第几个工作
其实本题就是确定这三个人的排序,谁做第一个,第二个,第三个工作,核心是全排列算法,确定排序,求时间总和,进而得到最小时间。
代码1234567891011121314151617181920212223242526272829303 ...
【2022暑期训练-5】7-2 半数集
给定一个自然数n,由n 开始可以依次产生半数集set(n)中的数如下(注意半数集是多重集)。
n∈set(n);
在n 的左边加上一个自然数,但该自然数不能超过最近添加的数的一半;
按此规则进行处理,直到不能再添加自然数为止。
例如,set(6)={6,16,26,126,36,136}。半数集set(6)中有6 个元素。
输入格式一个自然数n(0<n<1000)
输出格式半数集set(n)中的元素个数
输入样例16
输出样例16
解题思路采用递归的方法,统计每次递归是符合条件的个数即可
代码1234567891011121314151617#include <stdio.h>#include <stdlib.h>//int s[500];int set(n){ int i,sum = 1; for(i=1;i<=n/2;i++) sum += set(i); return sum;}int main(){ int n; scanf("%d",&n); ...