先说说我为什么写这些吧

  • 当程序猿太苦逼了,真的,时间久了,真没有搬砖的成就感高,好歹人家能盖栋楼(身材也能练得不错),咱们指不定哪天来个熊孩子把硬盘格了就啥也没了。
  • 这学期明显没把心放在前端上......汗啊,将来还想吃着口饭呢,但是这学期绝对没休息,只是忙了很多可能很多人认为无聊的事。
  • 因为这学期无聊事太多了,耽误了很多,也让导师很失望,自己也很自卑,整理一下调调心态。
  • 因为很多是针对作业的奇葩想法,所以,作业嘛,不糊弄就不是作业了,还希望大家多多批评。
  • 兴许因为哪篇文章能解决工作呢。
  • 我想试试Markdown。

靓照一张

进入正题

后台实现部分:

io = require "socket.io"
http = require "http"
fs = require "fs"
express = require "express"
mime = require "mime"
app = express()server = http.createServer app
server.listen 8080
console.log "Listening 8080"app.get "/",(req,res)->path = "#{__dirname}/console.html"res.writeHead 200,"Content-Type":mime.lookup(path)res.end fs.readFileSync pathapp.get "/jquery.min.js",(req,res)->path = "#{__dirname}/jquery.min.js"res.writeHead 200,"Content-Type":mime.lookup(path)res.end fs.readFileSync pathapp.get "/bootstrap.min.js",(req,res)->path = "#{__dirname}/bootstrap.min.js"res.writeHead 200,"Content-Type":mime.lookup(path)res.end fs.readFileSync pathapp.get "/bootstrap.min.css",(req,res)->path = "#{__dirname}/bootstrap.min.css"res.writeHead 200,"Content-Type":mime.lookup(path)res.end fs.readFileSync pathgetCurrentTime = ->d = new Date()return "#{d.getFullYear()}-#{d.getMonth()+1}-#{d.getDate()} #{d.getHours()}:#{d.getMinutes()}:#{d.getSeconds()}"class dynamicPack pack:(data)->c=[]i=0j=0while i<data.m+1c[i]=[]c[i][0]=0i++while j<data.n+1c[0][j]=0j++i=1while i<data.m+1j=1while j<data.n+1if data.w[i-1]<=jif c[i-1][j]<c[i-1][j-data.w[i-1]]+data.v[i-1]c[i][j]=c[i-1][j-data.w[i-1]]+data.v[i-1]else c[i][j]=c[i-1][j]else c[i][j] = c[i-1][j]j++i++return c;print:(c,data)->x = []i = data.mn = data.nstr = ""#console.log c[i][m]while i>0if  c[i][n] > c[i-1][n]x[i-1] = 1n -= data.w[i-1]else x[i-1] = 0i--i= 0count = 0while i<data.mcount += x[i]*data.v[i]str += (i+1)+"," if x[i]!=0i++             return str+"共计价值#{count}"
class knapPackpack : (data)->@v = data.v@w = data.w@m = data.m@n = data.n@cw = 0@cv = 0@put = []@bestp = 0temp_order = 0;temp = 0perp = []i=0while i<@mperp[i] = @v[i]/@w[i] @put[i] = 0;i++console.log perpi=0while i<@mj=i+1while j<@mif perp[i]<perp[j]temp = @v[i]@v[i] = @v[j]@v[j] = temptemp = @w[i]@w[i] = @w[j]@w[j] = tempj++i++backtrack : (i)->console.log i@bound iif i>@m@bestp = @cvreturnif @cw+@w[i]<=@n@cw+=@w[i]@cv+=@v[i]@put[i]=1@backtrack(i+1)@cw-=@w[i]@cv-=@v[i]if @bound(i+1)>@bestp@backtrack(i+1)bound :(i)->leftw = @n - @cwb = @cvwhile i<=@m and @w[i]<=leftwleftw -= @w[i]b += @v[i]i++b+=@v[i]/@w[i]*leftw if i<@mreturn bprint :(data)->@pack(data)console.log @wconsole.log @v@backtrack(0)console.log @put return @bestp
dask = (msg)->answer = ""data = JSON.parse msgconsole.log datad = new dynamicPack()console.log d.pack(data)answer += "动态规划,选择物品"+d.print d.pack(data),datareturn answerkask = (msg)->answer = ""data = JSON.parse msgconsole.log datak = new knapPack()answer += "分支限界,最优解"+k.print datareturn answerio.listen(server).on "connection",(socket)->socket.on "msg",(msg)->##console.log msgsocket.emit "msg",{time:getCurrentTime(),text:"calculating..."}socket.emit "msg",{time:getCurrentTime(),text:dask(msg)}socket.emit "msg",{time:getCurrentTime(),text:kask(msg)}##socket.broadcast.emit "msg",dataconsole.log "#{getCurrentTime()}:Connected"

前端实现部分:

<html>
<head>
<meta charset="utf-8">
<script type="text/javascript" src="./jquery.min.js"></script>
<script type="text/javascript" src="./bootstrap.min.js"></script>
<script type="text/javascript" src="./socket.io/socket.io.js"></script>
<link rel="stylesheet" type="text/css" href="./bootstrap.min.css">
<script type="text/javascript">
$(function(){var url = window.location.protocol + "//" + window.location.host;var socket = io.connect(url);socket.on('connect', function () {$("#list").append('<li class="list-group-item">Connected</li>');socket.on('msg',function(data){$("#list").append($('<li class="list-group-item"></li>').text(data.time+">>"+data.text));})socket.on('disconnect',function(){$("#list").append('<li class="list-group-item">Disconnected</li>');})})$("#chat").keypress(function(e){if (e.which == 13) {e.preventDefault();socket.emit('msg',$("#chat").val());$("#list").append('<li class="list-group-item">'+$('#chat').val()+'</li>');$('#chat').val(" ");};})
})
</script>
</head>
<body>
<br>
<div class="container well"><ul class="list-group" id="list"><li class="list-group-item">输入示例:{"n":10,"m":3,"w":[3,4,5],"v":[4,5,6]}其中n为背包容量,m为物品数量</li></ul><div><input type="text" class="form-control" id="chat"></div>
</div>
</body>
</html>

用coffee和socket.io实现的01背包算法相关推荐

  1. 0-1背包算法python实现

    0-1背包算法python实现 import numpy as np#计算状态数组 def bag(n,value,weight): '''n 背包容量value 价值数组weight 重量数组''' ...

  2. 背包算法轻松搞定——01背包算法、部分背包算法

    这篇文章过程讲得很详细,一文搞懂(点击看原文) 不懂之前觉得很难理解,觉得很复杂,其实没有必要.因为只要懂动态规划就可以很轻松搞定0-1背包算法(部分背包算法更简单,排序即可).之前看了很多篇文章都觉 ...

  3. 贪心算法和01背包算法

    贪心算法和01背包算法 实验报告 1.问题 2.解析 3.设计 4.分析 5.源码 实验报告 课程名称 <算法分析与设计> 实验名称 贪心算法和01背包算法 1.问题 [描述算法问题,首选 ...

  4. 0-1背包算法和完全背包算法MATLAB代码实现

    有10件物品,它们的重量分别是5,8,3,2,6,6,5,4,7,5,,它们的价值分别是2,4,7,7,3,6,3,5,4,6,现在给你个承重为30的背包,试用0-1背包.完全背包算法,分别计算如何让 ...

  5. 动态规划01背包算法详解

    动态规划算法核心思想: 将大的问题转化为小问题进行解决. 01背包问题: 01背包是在M件物品取出若干件放在空间为W的背包里,每件物品的重量为W1,W2至Wn,与之相对应的价值为V1V2至Vn.01背 ...

  6. 一文彻底搞懂01背包算法

    0-1 背包问题:给定 n 种物品和一个容量为 C 的背包,物品 i 的重量是 wiwiw_i,其价值为 viviv_i . 问:应该如何选择装入背包的物品,使得装入背包中的物品的总价值最大? 假设一 ...

  7. C语言:01背包算法

    一.实验目的 1.熟悉C/C++语言的集成开发环境: 1.通过动态规划算法的示例程序理解动态规划算法的基本思想 2.运用动态规划算法解决实际问题加深对动态规划算法的理解和运用 二.实验内容 1.动态规 ...

  8. 经典背包问题 01背包+完全背包+多重背包

    01 背包 有n 种不同的物品,每个物品有两个属性,size 体积,value 价值,现在给一个容量为 w 的背包,问最多可带走多少价值的物品. int f[w+1]; //f[x] 表示背包容量为x ...

  9. 我该如何向我的朋友解释“01背包”问题?

    最近有位朋友有向我问道关于"01背包"算法问题的理解.由于她本人在基础年纪没有学过<计算机算法设计与分析>这门课程,正如每一位初始的人学习一种新的知识一样,学习过程中总 ...

最新文章

  1. 【HTML】处理<br>换行符追加到前端换行无效的问题 --- html中渲染的字符串中包含HTML标签无效的处理方法,字符串中包含HTML标签被转义的问题 解决
  2. 图像处理常用边缘检测算子总结
  3. SQL Server死锁问题:事务(进程 ID x)与另一个进程被死锁在 锁 | 通信缓冲区资源上并且已被选作死锁牺牲品。请重新运行该事务。...
  4. qt在加入Q_OBJECT宏之后出现编译错误
  5. 大数据杀熟行为10月1日起明令禁止;阿里一号工程“犀牛制造”正式亮相;iOS 14 正式版发布 | 极客头条...
  6. Python+OpenCV+PyQt5+多线程实现桌面监控程序
  7. 数学建模之向量自回归模型
  8. TeamTalk UtilPdu详解
  9. 华为手机如何分享文件至电脑
  10. 集成稳压电源的分类及特性
  11. DNS区域(ZONE)相关概念
  12. Android KK NuPlayer
  13. 树莓派: oled屏幕字体制作
  14. 数据库设计——概念模型
  15. R语言如何做独立样本t检验
  16. 计算机文化基础——计算机基础知识
  17. 七个不良习惯导致攻击者轻松入侵数据库
  18. 分布式事务解决方案之2PC(两阶段提交)入门简介
  19. 柜台管理系统(1.2)
  20. 常见的中成药神奇疗效

热门文章

  1. Linux卸载unity,你如何删除Unity?
  2. AXI SG DMA 简易驱动 版本构思 (一)
  3. app获取个人信息是否合法_APP隐私合规介绍和实施方案
  4. java读文件while改for循环_JAVA学习第十二天:while循环与for循环
  5. iphone相册储存空间已满_无需第三方APP,加密 iPhone 中的照片
  6. python怎么做界面自动化_mac+python3+selenium做pc的界面自动化测试
  7. MySQL数据库锁构建_MySQL数据库InnoDB存储引擎中的锁机制
  8. Verilog初级教程(7)Verilog模块例化以及悬空端口的处理
  9. 【 MATLAB 】向量化编程实践(一)
  10. 一、typescript介绍和安装