动态规划--图像压缩

<算法设计与分析> --王晓东

  

题目描述和解析参照:http://blog.csdn.net/liufeng_king/article/details/8648195  他在那里分析得非常的详细。我也是按照这种思路来解的,而且算法设计与实现的课件上也是这么个解法。

主要是理解这个公式,还有就是定义的几个数组s[],l[],b[]的含义。那么就可以自下而上的解决问题了。动态规划的题目做多了,一看到这种题目我们就应该能找到具体的方法,那就是每次不断的变换K的位置,然后查找最优解。

我的代码实现:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>#define MAX 20int max_bit(int p[],int start,int end);
void compress(int s[],int p[],int b[],int l[],int n);
void back_tack(int s[],int b[],int l[],int n);int seg;int main()
{int i,l[MAX],b[MAX],s[MAX];int p[] = {10,12,15,255,1,2};for (i = 0; i < MAX; i++)s[i] = 999;compress(s,p,b,l,6);printf("最小空间为:%d\n",s[6]);seg = 0;back_tack(s,b,l,6);printf("总共分为%d段\n",seg);return 0;
}int max_bit(int p[],int start,int end)
{int i,bit_max,max_value;max_value = 0;for (i = start; i < end; i++)        //求出最大值max_value = max_value > p[i] ? max_value : p[i];bit_max = 1;            //最大值至少要多少的存储位i = max_value / 2;while(i > 0){bit_max++;i = i / 2;}return bit_max;
}void compress(int s[],int p[],int b[],int l[],int n)
{int i,k,tmp;int bit_max;s[0] = 0;s[1] = max_bit(p,0,1) + 11;l[1] = 0;for (i = 2; i <= n; i++){                //控制s[i] for (k = 0; k < i; k++){            //
            bit_max = max_bit(p,k,i);tmp = s[k] + (i-k)*bit_max + 11;//s[i] = s[i] < tmp ? s[i] : tmp;if (s[i] > tmp){s[i] = tmp;l[i] = i-k;b[i] = bit_max;}}}
}void back_tack(int s[],int b[],int l[],int n)
{if (n == 0){return;} else {seg += 1;back_tack(s,b,l,n-l[n]);printf("段长度:%d,所需存储位数:%d\n",l[n],b[n]);}
}//        2013/9/23  19:34    

 

 

转载于:https://www.cnblogs.com/Jason-Damon/p/3335566.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/361766.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何安全使用SWT的显示器asyncExec

大多数用户界面&#xff08;UI&#xff09;工具包都是单线程的&#xff0c; SWT也不例外。 这意味着必须仅从单个线程&#xff08;即所谓的UI线程&#xff09;访问UI对象。 另一方面&#xff0c;应在后台线程中执行长时间运行的任务&#xff0c;以使UI保持响应。 这使得后台线程…

解决添加Com引用 生成的Interop.*.dll 版本号永远是1.0的问题

在项目里面&#xff0c;添加对COM的引用时&#xff0c;自动生成了Interop.*.dll&#xff0c;但是这个dll的版本号永远是1.0. 如果使用InstallShield 制作安装包&#xff0c;进行修改安装时&#xff0c;这个dll不会被更新&#xff0c;就因为版本号永远是1.0 想修改这个版本号&am…

web页面全角半角

根据Unicode编码&#xff0c;全角空格为12288&#xff0c;半角空格为32 &#xff1b; 其他字符半角(33-126)与全角(65281-65374)的对应关系是&#xff1a;均相差65248 全角-->半角函数 //半角转换为全角函数 function ToBCD(str) { var tmp ""; for(var i0;…

Cannot find module '@babel/plugin-proposal-class-properties'

cnpm install --save-dev babel/plugin-proposal-class-properties转载于:https://www.cnblogs.com/qq917937712/p/11226922.html

可选和对象:空指针救星!

没有人喜欢空指针异常 &#xff01; 我们有办法摆脱它们吗&#xff1f; 也许 。 。 。 这篇文章中讨论了几种技术&#xff1a; 可选类型&#xff08;Java 8中的新增功能&#xff09; 对象类&#xff08;旧的Java 7东西&#xff01;&#xff09; Java 8中的可选类型 它是什…

oracle 存储过程的基本语法 及注意事项

oracle 存储过程的基本语法 1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字( 参数1 IN NUMBER, 参数2 IN NUMBER) IS变量1 INTEGER :0;变量2 DATE;BEGIN END 存储过程名字2.SELECT INTO STATEMENT 将select查询的结果存入到变量中&#xff0c;可以同时将多个列存…

function——函数声明头的提升和预解析

函数&#xff1a; 即function语句的集合&#xff0c;就是将多个语句封装到一起&#xff1b; 函数的执行要会自己遍历&#xff0c;遇见函数 a&#xff08;&#xff09;&#xff1b;执行语句&#xff0c;就要移交控制权&#xff0c;函数执行完毕之后&#xff0c;控制权又移交回…

在JDeveloper 12.1.3中将Java API用于WebSockets

介绍 最新版本的JDeveloper 12c&#xff08;12.1.3.0&#xff09;和WebLogic Server 12.1.3一起提供了一些新的Java EE 7功能。 其中之一是对用于WebSocket的JSR 356 Java API的支持。 实际上&#xff0c;从12.1.2.0版本开始就支持WebSocket协议&#xff08;RFC 6455&#xff0…

基于Verilog语言的伪随机码的编写

写之初&#xff0c;笔者并没有太大的自信&#xff0c;因为笔者对伪随机码并没有太多的认识。但老师有命&#xff0c;笔者不得不进行编写&#xff0c;同时笔者也特别希望能有个项目来锻炼自己。 笔者在开始编写的时候&#xff0c;首先上网查了很多的资料&#xff0c;对伪随机码算…

【HBuilder】手机App推送至Apple App Store过程

一、前言 最近由于公司同事离职&#xff0c;顶替这位同事从事手机App的研发工作&#xff0c;BIM数据平台部门采用的是HBuilder作为手机App的制作环境。本篇介绍我是如何将HBuilder的Release包发布至App Store的。 二、内容 1. 首先登录Apple Developer网站 2. 点击iTunes Conn…

Java性能调优调查结果(第四部分)

这是系列文章中的最后一篇&#xff0c;我们将分析我们在2014年10月进行的Java Performance Tuning Survey的结果。如果您还没有阅读第一篇文章&#xff0c;我建议您首先阅读以下内容&#xff1a; 性能问题的频率和严重性 最受欢迎的监控解决方案 查找根本原因的工具和技术 …

2012年第一个工作日

换代理尝试&#xff0c;竟然可以发博客了。以前的博客太散乱&#xff0c;打算在这里安家。 今天花了一上午时间&#xff0c;在各大网站不停地晃。希望自己能够弄清楚这个快速变化的世界。 2012确切的目标&#xff1a; 1. 工作仍然是首要的&#xff0c;锻炼的能力不同而已&#…

基于ArcEngine的插件式框架

先整理下&#xff0c;过几天把我以前用过的一个插件式GIS框架共享出来。转载于:https://www.cnblogs.com/songhuaiyu/archive/2010/08/16/1800854.html

【JQuery】选择器

一、前言 上一章学习完了Js的一些基本内容&#xff0c;本章开始学习JQuery语法。JQuery的基础语法是&#xff1a; $(selector).action() 那么重要的两个元素&#xff0c;一个是选择器&#xff0c;另一个是行为&#xff01;本章开始学习JQuery的选择器。 二、内容 $("*&quo…

android eclipse 配置 在项目右击选择properties

转载于:https://www.cnblogs.com/guoxiaoyue/p/3485243.html

减少主要GC暂停的频率

这篇文章将讨论一种技术&#xff0c;以减少应用程序等待时间造成的垃圾收集暂停的负担。 正如我几年前所写&#xff0c; 在JVM中无法禁用垃圾收集 。 但是&#xff0c;有一个巧妙的技巧可以用来大大减少长时间停顿的时间和频率。 如您所知&#xff0c;JVM中发生了两个不同的GC…

软件工程中交流的思考

良好的交流可以有效的降低项目的开发成本&#xff0c;相反不但可能数倍的增加成本&#xff0c;甚至可能导致项目的失败。 怎样在项目执行过程进行有效的交流呢&#xff1f; 1. 识别项目中交流主体。 2. 明确交流主题、内容、目标。 3. 做好交流记录、分析、整理、执行。 4. 交流…

【WebGL】《WebGL编程指南》读书笔记——第2章

一、前言 最近看了《WebGL编程指南》这本书&#xff0c;发现还是很有意思的&#xff0c;故每章阅读后做个笔记。 二、正文 Example1&#xff1a;在canvas中绘制2D矩形 <!DOCTYPE html> <html lang"en"><head><meta charset"utf-8" /&…

一个人的网站开发

从零开始开发一个全栈Web应用实录 https://blog.csdn.net/weixin_31347831/article/details/74625813 如何用PHP完整的开发一个网站&#xff1f; https://blog.csdn.net/a6984021/article/details/88787885 一个人如何完成一整个网站的开发&#xff08;推荐好文&#xff0c;看完…

WAI-ARIA对自动完成小部件的支持

在本文中&#xff0c;我想讨论AutoComplete小部件的可访问性。 在您键入该字段时&#xff0c;通常会使用“自动完成”窗口小部件提供建议。 在当前的工作中&#xff0c;我基于Twitter的Typeahead &#xff08;一个灵活JavaScript库&#xff09;实现了JSF组件&#xff0c;该库为…