![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
改改改不完的Bug......
一如既往,一往而深。
展开
-
乘法的计算-俄罗斯农夫法
**乘法的计算-俄罗斯农夫法**假设我想计算35乘以47的乘积是多少,根据俄罗斯农夫法的算法规则有:1. 选取两者中较小数并减去一半,舍去余数得到:2.把较大的数每次乘以2再生成一列数。3.划掉左侧第一列为偶数的所有行4.把右列中剩余的数相加即可得到两数相乘的结果了47+94+1504=1645=35*47这种算法在计算两数相乘的结果时,只用到了乘以2、除以2和求和运算。对于计算机计算而言,乘以2,除以2能够方便的使用左移和右移实现。public static int quickM原创 2021-01-11 20:40:43 · 438 阅读 · 0 评论 -
(C语言)小船过河代码
#include<stdio.h>#define N 10int Time(int *t,int n); int sum=0;main(){ int t[N]; int n,i,j,k,temp; printf("请输入要过河的人数:"); scanf("%d",&n); printf("请输入每个人过河所需的最长时间:"); for(i=0;i<...原创 2019-11-27 17:29:58 · 3019 阅读 · 4 评论 -
为什么快速排序要从最右边开始移动?
1 前提:以左边数为基准2 原因:(1) 从右往左,a[j]的值比基准值大的,则j一直左移,直到遇到比基准值小的停下,然后a[i]从左往右遇到比基准值大的停下,交换数值,倒数第二次交换完。(2) 每次从右往左开始找,j停在了比基准值小的数的位置上,与i相遇,将这个值与基准值交换,符合条件(3) 要是从左往右开始找,当i停在了比基准值大的位置上,与j相遇,将这个值与基准值交换的话,就不符合条件了,也可能会出现i=j,且a[i]与a[j]的值都比基准值大3 正常情况下过程演示: (从右至左查找)原创 2021-01-12 21:56:14 · 3409 阅读 · 4 评论 -
最常用的排序——快速排序 (原理和代码)
快速排序的算法基本思想: 1.选定一个枢纽元素,对待排序序列进行分割 2.对分割之后的序列一个部分小于枢纽元素,一个部分大于枢纽元素 3.再对这两个分割好的子序列进行上述的过程。 假设我们现在对“6 1 2 7 9 3 4 5 10 8”这10个数进行排序。首先在这个序列中随 便找一个数作为基准数(不要被这个名词吓到了,这...原创 2019-12-21 14:27:34 · 992 阅读 · 3 评论 -
Java——实现 pow(x, n)(即:计算 x 的 n 次幂函数)
计算 x 的 n 次幂函数原创 2019-12-01 20:58:42 · 5327 阅读 · 5 评论 -
C语言——钢条切割——贪心算法
钢条切割这道题只是我刚开始学习线性规划的自己的根据大致做法自己写的代码。作为笔记记录一下,未必是简便的程序。//贪心算法-----钢条切割 #include<stdio.h>typedef struct pole{ float lenght; float price; float per;}Pole;int main(){ ...原创 2019-11-27 22:26:29 · 1866 阅读 · 2 评论 -
C语言算法 活动选择 贪心算法
Problem Descriptionsdut 大学生艺术中心每天都有n个活动申请举办,但是为了举办更多的活动,必须要放弃一些活动,求出每天最多能举办多少活动。Input输入包括多组输入,每组输入第一行为申请的活动数n(n<100),从第2行到n+1行,每行两个数,是每个活动的开始时间b,结束时间e;Output输出每天最多能举办的活动数。Sample Input...原创 2019-11-27 22:15:16 · 1357 阅读 · 1 评论 -
C语言——迷宫问题的非递归解法
#include<stdio.h>#include<stdlib.h>void MazeMap();int **InitMaze();int **InitBook();int **CreatElem(); void PrintMaze(int **array);void FreeMaze(int **array);int m_row;int m_c...原创 2019-11-25 23:16:53 · 3153 阅读 · 9 评论 -
C语言实现——一元多项式运算器
/*程序简介:功能:对多项式求值,求导,两多项式相加,相减,相乘等运算作者:xuqg时间:2019.9.19 */#include<stdio.h>#include<stdlib.h>#include<math.h>typedef struct NodeType{ int id;//系数 int index;//指数 struct...原创 2019-09-19 21:19:36 · 1652 阅读 · 1 评论 -
(Josephus )约瑟夫环问题 C语言实现
约瑟夫环问题的一种描述是:编号为1,2,…,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个整数作为报上限制m,从第一个人开始顺时针自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有的人全部出列为止。试设计一个程序,求出列顺序。#include<stdio.h>...原创 2019-09-19 21:11:20 · 4461 阅读 · 1 评论 -
(C语言)有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。
题目描述有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。输入初始人数n输出最后一人的初始编号样例输入3样例输出2`方法:建立一个循环链表,封三删除一个节点,直到剩下一个节点为止在这里插入代码片#include <stdio.h>#include <stdlib.h>struct...原创 2019-06-30 21:07:58 · 2365 阅读 · 1 评论 -
C语言 选美比赛
问题描述用c语言编写软件完成以下任务:一批选手参加比赛,比赛的规则是最后得分越高,名次越低。当半决赛结束时,要在现场按照选手的出场顺序宣布最后得分和最后名次,获得相同分数的选手具有相同的名次,名次连续编号,不用考虑同名次的选手人数。例如:选手序号: 1,2,3,4,5,6,7选手得分: 5,3,4,7,3,5,6输出名次为:3,1,2,5,1,3,4问题分析首先题目要求按照选手的...原创 2019-06-13 23:42:08 · 784 阅读 · 1 评论 -
C语言。求两个数的最大公约数,最小公倍数,辗转相除法
辗转相除法求两个数的最大公约数辗转相除法, 又名欧几里德算法(Euclidean algorithm),是求最大公约数的一种方法。它的具体做法是:用较大数除以较小数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数。基本原理两个数的最大公约数是指能同时整除...原创 2019-06-05 14:53:21 · 699 阅读 · 2 评论 -
C语言利用递归调用使字符串的反向输出,#为结束标志不做输出
C语言利用递归调用使字符串的反向输出,#为结束标志不做输出#include<stdio.h>void print(){ char c; scanf("%c",&c); if(c!='#') print(); if(c!='#') printf("%c",c); }int main(){ print(); return 0;}...原创 2019-06-05 14:26:27 · 627 阅读 · 0 评论 -
c语言常见的排序算法
选择参考原创 2019-05-09 20:43:21 · 1013 阅读 · 1 评论