C语言
离弦流浪
这个作者很懒,什么都没留下…
展开
-
算法竞赛入门经典 第四章答案
4.4.1 小问题集锦 任务1:使用assert宏,让解不唯一时退出。#include#include void solve(double a,double b, double c,double d, double e,double f,double &x,double &y){ assert(a*e-b*d!=0.); x=(c*e-b*f)/(a*e-b*原创 2015-02-04 22:17:36 · 849 阅读 · 0 评论 -
从零学习算法竞赛2:三整数排序
题目描述: 输入3个整数,从小到大排序后输出。 样例输出: 20 7 33 7 20 33 分析:三个数的顺序一共有六种可能:abc,acb,bac,bca,cab,cba,所以最简单的思路是使用6条if语句。 #includeint main(){ int a,b,c; scan原创 2016-04-01 10:34:11 · 391 阅读 · 1 评论 -
从零学习算法竞赛1: 变量交换
学习编程时,“明知故犯”是有益的:起码你知道了错误的现象。这样,当真的不小心犯错时,可以通过现象猜测到可能的原因。 大多数的算法竞赛包含如下一些相同的“游戏规则”。 1.选手程序的执行是自动完成的,没有人工干预。不要在用户输入之前打印提示信息(例如“Please input n:”),这样不仅不会为程序赢得更高的“界面友好分”,反而会让程序丢掉大量的(甚原创 2016-03-30 20:19:11 · 417 阅读 · 0 评论 -
不必要的优化
#include void main(){ int i=1,sum=0; //初始化 while(i<=100){ sum=sum+i; i=i+1; } cout <<"sum = " <<sum <<endl;}While循环中的继续条件,是一个表达式,并没有更多的限定,所以,上例可以在继续条件处放上一个逗号表达式以完成同样原创 2015-09-16 10:47:59 · 367 阅读 · 0 评论 -
算法(1)——递归与分治
任何一个可以用计算机求解的问题所需的计算都与其规模n有关。问题的规模越小,越容易直接求解,解题所需的计算时间也越少。例如,对于n个元素的排序问题,当n=1时,不需要任何计算;n=2时,只要作一次比较即可排好序;n=3时只要作3次比较即可……。当n比较大的时候,问题就不那么容易处理了。要想直接解决一个规模较大的问题,有时是相当困难的。分治的设计思想是,讲一个难以解决的大问题分割成一些规模较小的相同问原创 2015-09-16 09:25:48 · 581 阅读 · 0 评论 -
栈——(1)栈的顺序存储
栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。 首先系统或者数据结构栈中数据内容的读取与插入(压入push和 弹出原创 2015-09-12 21:27:29 · 1645 阅读 · 0 评论 -
素数筛选法
质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数。素数筛选法又称筛法,具体做法是:先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的原创 2015-09-12 20:18:13 · 323 阅读 · 0 评论 -
内部排序(3)——插入排序之折半插入排序
由于插入排序的基本思想是在一个有序序列中插入一个新的记录,则可以利用"折半查找"查询插入位置,由此得到的插入排序算法为"折半插入排序"。算法如下: void BInsertSort (SqList &L) { // 对顺序表L作折半插入排序 for ( i=2; i<length; ++i ) { r[0] = r[i];原创 2015-08-17 12:23:15 · 767 阅读 · 0 评论 -
内部排序(3)——插入排序
直接插入排序(StraightInsertion Sort)是一种最简单的排序方法,它的基本操作是讲一个记录插入到已排好序的有序表中,从而得到一个新的、记录增1的有序表。 例如,已知待排序的一组记录的初始排列如下所示: R(49),R(38),R(65),R(97),R(76),R(13),R(27),R(49),… 假设在排序过程中,前原创 2015-08-14 12:10:38 · 576 阅读 · 0 评论 -
内部排序(2)——冒泡排序
它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。之所以叫冒泡排序,是因为它每次排序时,对所排序的数据,排序扫描总是将最大的那个数从地下“冒”上来。冒泡排序效率不高,这是因为它需要约n^2/2次比较,然而对一些小数来说,它的性能还是可以接受的。这个算法的名字由来是因为越大的元素会经由交换慢慢“原创 2015-08-12 18:38:50 · 1770 阅读 · 0 评论 -
内部排序
由于待排序的记录数量不同,使得排序过程中涉及的存储器不同,可将排序方法分为两大类:一类是内部排序,指的是待排序记录存放在计算机随处存储器中进行的排序过程;另一类是外部排序,指的是待排序记录的数量很大,以致内存一次不能容纳全部记录,在排序过程中尚需对外存进行访问的排序过程。内部排序的方法很多,但就其全面性能而言,很难提出一种被认为是一种最好的方法,每一种方法豆油各自的优缺点,适合在不同的环境下(如记原创 2015-08-12 17:26:09 · 545 阅读 · 0 评论 -
内部排序(1)——选择排序
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法(比如序列[5, 5,3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。选择排序算法步骤如下:第1步:在未排序的n个数中找到最小数,讲它与a[0]交换。原创 2015-08-12 17:39:22 · 602 阅读 · 0 评论 -
nyoj 题目111 分数加减法
分数加减法时间限制:3000 ms | 内存限制:65535 KB难度:2描述编写一个C程序,实现两个分数的加减法输入输入包含多行数据 每行数据是一个字符串,格式是"a/boc/d"。 其中a, b, c, d是一个0-9的整数。o是运算符"+"或者"-"。 数据以EOF结束 输入数据保证合法输出对于输入数据的每一行输原创 2015-06-07 10:49:13 · 436 阅读 · 0 评论 -
nyoj 题目97 兄弟郊游问题
兄弟郊游问题时间限制:3000 ms | 内存限制:65535 KB难度:2描述兄弟俩骑车郊游,弟弟先出发,每分钟X米,M分钟后,哥哥带一条狗出发。以每分钟Y米的速度去追弟弟,而狗则以每分钟Z米的速度向弟弟跑去,追上弟弟后又立即返回,直到哥哥追上弟弟时,狗跑了多少米?输入第一行输入一个整数N,表示测试数据的组数(N每组测试数据占一行,是四个正整数原创 2015-06-07 10:56:59 · 736 阅读 · 0 评论 -
\r和\n的区别
O(∩_∩)O 在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在原创 2015-02-06 21:24:58 · 447 阅读 · 0 评论 -
2018
开始原创 2018-03-06 21:22:10 · 1994 阅读 · 0 评论