数据结构 贪婪法 学习笔记

自动计算找零的张数

#include<stdio.h>
#define MAXN 9
int parvalue[MAXN] = {10000,5000,1000,500,200,100,50,20,10};
int num[MAXN] = {0};
int exchange(int n)
{
	int i,j;
	for(i=0;i<MAXN;i++)
		if(n>parvalue[i]) break;
	while(n>0 && i<MAXN)
	{
		if(n>=parvalue[i])
		{
			n -=parvalue[i];
			num[i]++;
		}else if(n<10 && n>=5)
		{
			num[MAXN-1]++;
			break;
		}else i++;

	}
	return 0;
}

int main()
{
	int i;
	float m;
	printf("请输入找零的金额:");
	scanf("%f",&m);
	exchange((int)100*m);
	printf("\n%.2f元零钱的组成:\n",m);
	for(i=0;i<MAXN;i++)
		if(num[i]>0)
			printf("%6.2f: %d张\n",(float)parvalue[i]/100.0,num[i]);
	getch();
	return 0;
}
时间: 2024-10-19 14:41:30

数据结构 贪婪法 学习笔记的相关文章

数据结构 顺推法 学习笔记

斐波拉契数列 #include <stdio.h> #define NUM 13 int main() { int  i; long fib[NUM] = {1,1}; for(i=2 ; i<NUM ;i++)  { fib[i] = fib[i-1] + fib[i-2]; } for( i =0 ;i<NUM ; i++) { printf("%d月兔子总数:%d\n", i ,fib[i]); } getch(); return 0; }

C#数字图像处理算法学习笔记(一)--C#图像处理的3中方法

C#数字图像处理算法学习笔记(一)--C#图像处理的3中方法 Bitmap类:此类封装了GDI+中的一个位图,次位图有图形图像及其属性的像素数据组成.因此此类是用于处理像素数据定义的图形的对象.该类的主要方法和属性如下:  GetPixel与SetPixel方法:获取或设置一个图像的指定像素的颜色. PixelFormat属性:返回图像的像素格式. Height和Width:返回图像的高度和宽度. LockBits与UnLockBits方法:分别锁定和解锁系统内存中的位图像素. LockBits

C#数字图像处理算法学习笔记(三)--图像几何变换

C#数字图像处理算法学习笔记(三)--图像几何变换 几何图像处理包括 图像的平移变换,镜像变换,旋转变换,伸缩变换,在这里仅以水平镜像为例,通过代码来理解其基本操作方式: 翻转前: 翻转后: //后台代码: public partial class Form1 : Form { private string _curFileName; private Bitmap _srcBitmap; private Bitmap _dstBitmap; public Form1() { Initialize

C#数字图像处理算法学习笔记(二)--点运算与直方图

C#数字图像处理算法学习笔记(二)--点运算与直方图 在数字图像处理中,点运算是一种简单而重要的技术.点运算只是根据对象的像素的输入灰度值来决定像素的输出灰度值的图像处理运算.它有时也被称为对比度增强.对比度拉伸或灰度变换.点运算没有改变图像的空间运算,它是按照一定的方式改变了图像的灰度直方图. 灰度直方图是一种最简单且最有用的工具,它概括了一幅图像的灰度级内容. 灰度直方图的定义: 灰度直方图是灰度的函数,描述的是图像中的具有该灰度级的像素个数.如果用直角坐标系来表示,则它的横坐标是灰度级,纵

构建之法 学习笔记02

在一个项目运行的过程中,所有参与者都是团队的一份子,都是推进进度的零件.因此在知识和技术之上,不可或缺的是对于团队的建设. 在这次的学习笔记之中我想简要谈谈本书的第十七章的内容--人,绩效和职业德行. 在这个章节里,书中首先提出了这样一个概念:猪,鸡和鹦鹉,这三种动物都有着在团队中各自潜在的含义.一个团队的人可能来自五湖四海,有个各自的性格和特性,但是肯定都有着同一个目标,为着同一个目标而走到了一起. 有些人是猪--在这里的意向并无贬义,对他们来说,想要项目成功就得拿出自己身上的肉,背水一战:一

统计学习方法 (第3章)K近邻法 学习笔记

第3章 K近邻法 k近邻算法简单.直观:给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的k个实例,这k个实例的多数属于某个类,就把该输入实例分为这个类.当K=1时,又称为最近邻算法,这时候就是将训练数据集中与x最邻近点作为x的类. 3.1 k近邻模型 模型由三个基本要素--距离度量.k值得选择.和分类决策规则决定. 3.1.1 距离度量 p=2时,称为欧式距离,p=1时,称为曼哈顿距离. 3.1.2 k值的选择 k 值的选择会对k 近邻法的结果产生重大影响.如果选择较小的k

构建之法 学习笔记01

起初我只是在专业要求的硬性规定下去接触了这本<构建之法>,然后仔细的看下来之后确实让我受益匪浅,让我更切实的了解了这个行业.这本书对我来书最实用的地方在于,在高大上的理论之后会有具体的实例来帮助理解.在介绍方法论的同时,会介绍方法论不适用的场景,介绍方法论在现实中是怎样跑偏--什么叫宏观视角?什么叫最佳实践?什么叫算无遗策?就像画一棵决策树,向哪个分支走,结果会怎么样,清清楚楚,明明白白,让人信服.能让学生了解到工作中接触的种种角色及其想法.诉求,避免"以程序为中心"思考问

【算法与数据结构】B-树学习笔记

B-tree(多路搜索树,并不是二叉的)是一种常见的数据结构.使用B-tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度.按照翻译,B 通常认为是Balance的简称.这个数据结构一般用于数据库的索引,综合效率较高. B-tree中,每个结点包含: 1.本结点所含关键字的个数: 2.指向父结点的指针: 3.关键字: 4.指向子结点的指针: B-tree是一种多路搜索树(并不是二叉的),对于一棵M阶树: 1.定义任意非叶子结点最多只有M个孩子:且M>2: 2.根结点的孩子数为[2

数据结构与算法学习笔记(四)

单链表的整表创建 声明一结点p和计数器变量i 初始化一空链表L 让L的头结点的指针指向NULL,即建立一个带头结点的单链表 循环实现后继结点的赋值和插入 头插法:从一个空表开始,生成新节点,读取数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头上,直到结束位置.简单来说就是把新加进的元素放在表头后的第一个位置 先让新结点的next指向头结点之后 然后让表头的next指向新结点 void CreateListHead (LinkList *L,int n) { LinkList p; i