【程序设计与算法笔记之称硬币】教程文章相关的互联网学习教程文章

《程序设计与算法(二)算法基础》《第二周 递归》逆波兰表达式【代码】

C 库函数 double atof(const char *str) 把参数 str 所指向的字符串转换为一个浮点数(类型为 double 型)。 声明 下面是 atof() 函数的声明。 double atof(const char *str) 参数str -- 要转换为浮点数的字符串。返回值 函数返回转换后的双精度浮点数,如果没有执行有效的转换,则返回零(0.0)。 本题中“逆波兰表达式”的定义:1)一个数是一个逆波兰表达式,值为该数2)运算符 逆波兰表达式 逆波兰表达式 是逆波兰表达式 值为两...

【MOOC课程学习记录】程序设计与算法(一)C语言程序设计

课程结课了,把做的习题都记录一下,告诉自己多少学了点东西,也能给自己一点鼓励。 ps:题目都在cxsjsxmooc.openjudge.cn上能看到,参考答案在差不多结课的时候也会在mooc上放出来。 程序设计与算法(一)C语言程序设计 第一周习题(2019夏季) 001:输出第二个整数 #include <iostream> #include <cstdio> using namespace std;int main(){int a, b, c;cin >> a >> b >> c;cout << b;return 0; } 002:字符菱形 #include <iostream> ...

原程序员的算法课(1)-算法概述2019年08月18日 17:58:49 十步杀一人_千里不留行 阅读数 11更多所属专栏: 程序员的算法课编辑【图】

【算法之美】数据结构+算法=程序。 前言 数据结构只是静态的描述了数据元素之间的关系。高效的程序需要在数据结构的基础上设计和选择算法。 高效的程序=恰当的数据结构+合适的算法 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个...

程序员的算法课(2)-排序算法【代码】【图】

原文链接:https://www.jianshu.com/p/47170b1ced23术语说明稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面; 不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面; 内排序:所有排序操作都在内存中完成; 外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行;一、排序算法总结n: 数据规模 k: “桶”的个数 In-place: 占用常数内存,不占用额外内存 Out-place: 占用额外...

程序员,你应该知道的二分查找算法【图】

原理 二分查找(Binary Search)算法,也叫折半查找算法。二分查找的思想非常简单,有点类似分治的思想。二分查找针对的是一个有序的数据集合,每次都通过跟区间的中间元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间被缩小为 0。 为了方便理解,我们以数组1, 2, 4, 5, 6, 7, 9, 12, 15, 19, 23, 26, 29, 34, 39,在数组中查找26为例,制作了一张查找过程图,其中low标示左下标,high标示右下标,mid标...

JAVA程序设计: 二叉树的层次遍历(LeetCode:102)

给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其层次遍历结果: [ [3], [9,20], [15,7] ] 思路:采用队列广搜一遍就行了。class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) { val = x; } }class Solution {public List<List<Integer>> levelOrder(TreeNode root) {int...

数据结构与算法基础之栈程序演示:创建空栈、压栈、出栈、遍历、清空【代码】

1 #include<stdio.h>2 #include<malloc.h>3 #include<stdlib.h>4 5 typedef struct Node{6 int data;//数据域7 struct Node * pNext;8 }NODE,*PNODE;9 10 typedef struct Stack{11 PNODE pTop;//指向栈的顶部节点12 PNODE pBottom;//指向栈的底部节点13 }STACK,* PSTACK;14 15 //函数声明16 void init(PSTACK);//初始化一个空栈,使pTop和pBottom都指向头结点17 void push(PSTACK,int);//存元素,压栈18 void trav...

计算一棵二叉树单分支结点个数的完整程序【代码】

#include <stdio.h>typedef struct BTNode {char data;struct BTNode * lchild; //p是指针L是左,child是孩子struct BTNode * rchild; }BTNode,*BiTree;struct BTNode * CreateBTree(); void PreTraverseBTree(struct BTNode *); int DsonNodes(struct BTNode *);int main() {int t;struct BTNode * T = CreateBTree();PreTraverseBTree(T);printf("\n");t = DsonNodes(T);printf("%d",t);return 0; } void PreTraverseBTree(BiTre...

好程序员Java学习路线分享冒泡排序及优化【代码】

? 好程序员Java学习路线分享冒泡排序及优化,冒泡排序是一定典型的交换排序,如排序规则是升序,有如下数列: A[0] A[1] A[2] A[3] ...... A[n] ? 将A[0]和A[1]比较,如果A[0]>A[1] ,则交换两个元素的位置,否则不变, 再继续比较A[1]和A[2],直到A[n-1]和A[n]。即比较相邻的两个元素,如果前一个大,就交换(否则不交换),再继续比较后面的元素,每一轮比较之后,最大的元素会移动到最后(完成一轮冒泡);再开始第二轮冒泡,...

好程序员Java学习路线分享5分钟了解基数排序【图】

好程序员Java学习路线分享5分钟了解基数排序,前言:基数排序无需进行比较和交换,而是利用分配和收集两种基本操作实现排序。基数排序分为两种:第一种是LSD ,从最低位开始排序;第二种是 MSD, 从最高位开始排序。 基数排序思想介绍 分配:对于数字,每位的取值范围是0-9,因此需要10个容器(我们可以将其称为桶),这10个桶标号为0-9。每趟排序时,我们取每一个元素在该位的数值依次放入桶中。收集:在一趟排序完成后,我们按顺...

【程序设计与算法(一)】求最大公约数【代码】【图】

要点: 1.迭代法 2.思路在题目提示里#include <iostream> using namespace std; int main() { ?int a,b; ?cin>>a>>b; ?while(a%b!=0){ ??int t=a%b; ??a=b; ??b=t; ?} ?cout<<b; ?return 0; }

程序设计实习MOOC / 程序设计与算法(一)第6周测验(2019夏季)

001:Pell数列#include <iostream> #include<cstdio> #include<cstring> #include<cmath> #pragma warning(disable:4996) using namespace std; unsigned int pell[1000010]; int a[100]; int main() {//freopen("C:\\Users\\czh\\Desktop\\2.txt", "r", stdin);int n;cin >> n;for (int i = 0;i < n;i++)cin >> a[i];int Max = 0;for (int i = 0;i < n;i++)Max = Max < a[i] ? a[i] : Max;pell[1] = 1;pell[2] = 2;for (int i = 3;...

数据结构和算法预定Java 5或6或Scala为程序员而不是CS类教科书

实际上,到目前为止我看过的与本主题相关的所有书籍都是为课堂上的计算机科学专业学生设计的.我正在寻找一本由专业工作软件工程师及其为工作程序员撰写的书.你知道书吗? 特别是我正在寻找能引入相关数学的东西,例如统计或代数,并充分利用Object Oriendted概念. 如果没有这样的书,那么我正在寻找与此问题相关的在线PDF文档.如果它使用scala,那将是理想的,但如果没有,那么Java 5或6就可以了.解决方法:试试“Algorithms in a Nutshell...

左神算法书籍《程序员代码面试指南》——2_07将单向链表按某值划分成左边小、中间相等、右边大的形式【代码】

Problem:【题目】 给定一个单向链表的头节点head,节点的值类型是整型,再给定一个整数pivot。 实现一个调整链表的函数,将链表调整为左部分都是值小于 pivot的节点, 中间部分都是值等于pivot的节点,右部分都是值大于 pivot的节点。 除这个要求外,对调整后的节点顺序没有更多的要求。 例如:链表9->0->4->5->1,pivot = 3。 调整后链表可以是1->0->4->9->5, 可以是0->1->9->5->4。 总之, 满足左部分都是小于3的节点, 中间部...

左神算法书籍《程序员代码面试指南》——2_05环形单链表的约瑟夫问题【代码】

【题目】据说著名犹太历史学家Josephus有过以下故事:在罗马人占领乔塔帕特后,39个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,报数到3的人就自杀,然后再由下一个人重新报1,报数到3的人再自杀,这样依次下去,直到剩下最后一个人时,那个人可以自由选择自己的命运。这就是著名的约瑟夫问题。现在请用单向环形链表描述该结...