- 博客(17)
- 收藏
- 关注
原创 用C语言实现求最大公因数和最小公倍数
用C语言实现最大公因数和最小公倍数一.方法论最大 公因数和最小公倍数求两个数最大公因数eg:18 2418的因数 1 2 3 6 9 1824的因数 1 2 3 4 6 8 12 24求法:辗转相除法24÷18=1…66÷18=6…0因此18 24的最大公因数是6.求两个数最小公倍数eg:18 与 2418×24÷6=72 //6为最大公因数3 与 53×5÷15=1 //15为最大公因数求法:两数相乘除以两数的最大公因数二.
2021-01-24 23:18:23 11098 5
原创 背包问题——贪心算法
问题描述:假设山洞中有n种宝物,每种宝物有一定重量w和相应的价值v,毛驴运载能力有限,只能运走m重量的宝物,一种宝物只能拿一样,宝物可以分割。那么怎么才能使毛驴运走宝物的价值最大呢?问题分析:与0-1背包问题类似,所不同的是在选择物品装入背包时,物品可分割,因此可按性价比(价值/质量)排序选择不同的物品。0-1背包问题详见01背包问题_Player_HA的博客-CSDN博客数据结构及初始化,将n种宝物的重量和价值存储在结构体three(包含重量、价值、性价比3个成员)中,同时求出每种宝物
2022-03-24 21:26:03 2760
原创 01背包问题
问题描述:给定n个重量为{w1, w2, … ,wn}、价值为{v1, v2, … ,vn}的物品和一个容量为C的背包,求这些物品中的一个最有价值的子集,且要能够装到背包中。通过以下例子来解释01背包问题分析:在解决问题之前,为描述方便,首先定义一些变量:Vi表示第 i 个物品的价值,Wi表示第 i 个物品的体积,定义f(i,j):当前背包容量 j,前 i 个物品最佳组合对应的价值.如果 前一个物品的重量大于当前背包重量,则取不下,如果前一个物品重量小于当前背包重量,则要选择是...
2022-03-20 21:21:27 2342
原创 汉诺塔问题
相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如图1)。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。...
2022-03-20 19:48:39 278
原创 百元买百鸡问题
问题:公元5世纪末,我国古代数学家张丘建在他所撰写的《算经》中,提出了这样一个问题:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?”意思是公鸡每只5元、母鸡每只3元、小鸡3只1元,用100元钱买100只鸡,求公鸡、母鸡、小鸡的只数。分析:令a为公鸡只数,b为母鸡只数,c为小鸡只数。列出约束方程: (1)a+b+c=100(2)5a+3b+c/3=100(3)c%3=0 算法一:#...
2022-03-20 18:47:19 6445
原创 单链表的基本操作
单链表的基本操作一、实验目的1、理解和掌握单链表的类型定义方法和结点生成方法。2、掌握建立单链表和显示单链表元素的算法。3、掌握单链表的插入和删除算法。二、实验内容1、建立一个单链表,并从屏幕显示单链表元素列表。2、删除链表某位置上的元素,并保持链表原有的顺序不变。3、在指定的位置插入一个元素。三、实验源代码#include<stdio.h>#include<stdlib.h>#include <iostream>usi..
2021-10-18 21:56:43 1821 2
原创 以顺序表的方式建立和查找
实验:用顺序表的方式建立和查找一、实验目的1、掌握建立顺序表的基本方法。2、理解和掌握顺序表元素查找算法。3、掌握顺序表的插入、删除算法的思想和实现。二、实验内容1、 建立一个顺序表,要求从键盘输入 n个整数,并将该顺序表的元素从屏幕显示出来。2、编写查找函数,在上面的顺序表中查找其中一个元素,如果找到,返回该元素在顺序表中的位置和该元素的值,否则提示无此元素。要求被查找元素从键盘输入。3、编写插入和删除函数三、实验源代码#include<stdio.h>
2021-10-16 15:44:55 2872
原创 以C语言实现三子棋
三子棋介绍三子期是黑白棋的一种。三子棋是一种民间传统游戏,又叫九宫棋、圈圈叉叉、一条龙、井字棋等。将正方形对角线连起来,相对两边依次摆上三个双方棋子,只要将自己的三个棋子走成一条线,对方就算输了。但是,有很多时候会出现和棋的情况。三子棋规则玩家和电脑交替在棋盘中落下一个棋子,直到一方胜利或者平局,则结束游戏。当棋盘上同一行或者同一列或者对角线的三个棋子都相同时,棋子所属方胜利。当棋盘已满还未分出胜负,则平局。代码game.h//函数的声明#include<stdio
2021-08-17 21:55:32 242
原创 将一个四位数 反向输出
题目描述:将一个四位数反向输出;输入描述:一行,输入一个整数n(1000<=n<=9999);输出描述:针对每组输入,反向输出对应四位数;示例:输入:1234输出:4321方法一:取余取商eg:输入:1234 n=1234 1234%10=4 1234/10=123 n=123 123%10=3 123/10=12 n=12 ...
2021-07-31 21:26:32 3639 1
原创 筛选法求素数&一般方法求素数&判断一个数是否是素数
筛选法求素数&一般方法求素数&判断一个数是否是素数1.判断一个数是否是素数#include<stdio.h>#include<math.h>int main(){ int n, i, k; printf("please enter a integer number"); scanf_s("%d", &n); k = sqrt(n); for (i = 2; i ...
2021-01-31 22:52:22 7000 10
原创 10个数比大小(排序)——冒泡和选择
10个数比大小(排序)——冒泡和选择一. 冒泡法(起泡法)冒泡排序的基本概念是(以升序排序为例):依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数
2021-01-27 22:42:24 8136
原创 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个, 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃前一天剩下的一半零一个。 到第10天早上想再吃时,见
猴子吃桃问题猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少个桃子?答案为:1534个。方法论 ——倒推计算猴子第10天剩1个桃猴子第9天剩(1+1)*2=4个桃猴子第8天剩(4+1)*2=10个桃猴子第7天剩(10+1)*2=22个桃猴子第6天剩(22+1)*2=46个桃猴子第5天剩(46+1)*2=94个桃猴子第4天剩(
2021-01-25 10:59:40 124093 11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人