自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

用coffee和socket.io實現(xiàn)的01背包算法

開發(fā) 前端 算法
程序猿太苦逼了,真的,時間久了,真沒有搬磚的成就感高,好歹人家能蓋棟樓(身材也能練得不錯),咱們指不定哪天來個熊孩子把硬盤格了就啥也沒了……

先說說我為什么寫這些吧

  • 當(dāng)程序猿太苦逼了,真的,時間久了,真沒有搬磚的成就感高,好歹人家能蓋棟樓(身材也能練得不錯),咱們指不定哪天來個熊孩子把硬盤格了就啥也沒了。
  • 這學(xué)期明顯沒把心放在前端上……汗啊,將來還想吃著口飯呢,但是這學(xué)期絕對沒休息,只是忙了很多可能很多人認為無聊的事。
  • 因為這學(xué)期無聊事太多了,耽誤了很多,也讓導(dǎo)師很失望,自己也很自卑,整理一下調(diào)調(diào)心態(tài)。
  • 因為很多是針對作業(yè)的奇葩想法,所以,作業(yè)嘛,不糊弄就不是作業(yè)了,還希望大家多多批評。
  • 興許因為哪篇文章能解決工作呢。
  • 我想試試Markdown。

靚照一張

多謝bs,前端省老事兒了

進入正題

后臺實現(xiàn)部分:

  1. io = require “socket.io”  
  2. http = require “http”  
  3. fs = require “fs”  
  4. express = require “express”  
  5. mime = require “mime”  
  6. app = express()  
  7. server = http.createServer app  
  8. server.listen 8080  
  9. console.log “Listening 8080” 

app.get “/“,(req,res)->

  1. path = "#{__dirname}/console.html" 
  2. res.writeHead 200,"Content-Type":mime.lookup(path)  
  3. res.end fs.readFileSync path 

app.get “/jquery.min.js”,(req,res)->

  1. path = "#{__dirname}/jquery.min.js" 
  2. res.writeHead 200,"Content-Type":mime.lookup(path)  
  3. res.end fs.readFileSync path 

app.get “/bootstrap.min.js”,(req,res)->

  1. path = "#{__dirname}/bootstrap.min.js" 
  2. res.writeHead 200,"Content-Type":mime.lookup(path)  
  3. res.end fs.readFileSync path 

app.get “/bootstrap.min.css”,(req,res)->

  1. path = "#{__dirname}/bootstrap.min.css" 
  2. res.writeHead 200,"Content-Type":mime.lookup(path)  
  3. res.end fs.readFileSync path 

getCurrentTime = ->
d = new Date()
return “#{d.getFullYear()}-#{d.getMonth()+1}-#{d.getDate()} #{d.getHours()}:#{d.getMinutes()}:#{d.getSeconds()}”

class dynamicPack

  1. pack:(data)->  
  2.     c=[]  
  3.     i=0 
  4.     j=0 
  5.     while i<data.m+1 
  6.         c[i]=[]  
  7.         c[i][0]=0 
  8.         i++  
  9.     while j<data.n+1 
  10.         c[0][j]=0 
  11.         j++  
  12.     i=1 
  13.     while i<data.m+1 
  14.         j=1 
  15.         while j<data.n+1 
  16.             if data.w[i-1]<=j  
  17.                 if c[i-1][j]<c[i-1][j-data.w[i-1]]+data.v[i-1]  
  18.                     c[i][j]=c[i-1][j-data.w[i-1]]+data.v[i-1]  
  19.                 else 
  20.                     c[i][j]=c[i-1][j]  
  21.             else c[i][j] = c[i-1][j]  
  22.             j++  
  23.         i++  
  24.     return c;  
  25. print:(c,data)->  
  26.     x = []  
  27.     i = data.m  
  28.     n = data.n  
  29.     str = "" 
  30.     #console.log c[i][m]  
  31.     while i>0 
  32.         if  c[i][n] > c[i-1][n]  
  33.             x[i-1] = 1 
  34.             n -= data.w[i-1]  
  35.         else x[i-1] = 0 
  36.         i--  
  37.     i= 0 
  38.     count = 0 
  39.     while i<data.m  
  40.         count += x[i]*data.v[i]  
  41.         str += (i+1)+"," if x[i]!=0 
  42.         i++               
  43.     return str+"共計價值#{count}" 

class knapPack

  1. pack : (data)->  
  2.     @v = data.v  
  3.     @w = data.w  
  4.     @m = data.m  
  5.     @n = data.n  
  6.     @cw = 0 
  7.     @cv = 0 
  8.     @put = []  
  9.     @bestp = 0 
  10.    
  11.     temp_order = 0;  
  12.     temp = 0 
  13.     perp = []  
  14.     i=0 
  15.     while i<@m 
  16.         perp[i] = @v[i]/@w[i]   
  17.         @put[i] = 0;  
  18.         i++  
  19.     console.log perp  
  20.     i=0 
  21.     while i<@m 
  22.         j=i+1 
  23.         while j<@m 
  24.             if perp[i]<perp[j]  
  25.                 temp = @v[i]  
  26.                 @v[i] = @v[j]  
  27.                 @v[j] = temp  
  28.    
  29.                 temp = @w[i]  
  30.                 @w[i] = @w[j]  
  31.                 @w[j] = temp  
  32.             j++  
  33.         i++  
  34. backtrack : (i)->  
  35.     console.log i  
  36.     @bound i  
  37.     if i>@m 
  38.         @bestp = @cv 
  39.         return 
  40.     if @cw+@w[i]<=@n 
  41.         @cw+=@w[i]  
  42.         @cv+=@v[i]  
  43.         @put[i]=1 
  44.         @backtrack(i+1)  
  45.         @cw-=@w[i]  
  46.         @cv-=@v[i]  
  47.     if @bound(i+1)>@bestp 
  48.         @backtrack(i+1)  
  49. bound :(i)->  
  50.     leftw = @n - @cw 
  51.     b = @cv 
  52.     while i<=@m and @w[i]<=leftw  
  53.         leftw -= @w[i]  
  54.         b += @v[i]  
  55.         i++  
  56.     b+=@v[i]/@w[i]*leftw if i<@m 
  57.     return b  
  58. print :(data)->  
  59.     @pack(data)  
  60.     console.log @w 
  61.     console.log @v 
  62.     @backtrack(0)  
  63.     console.log @put 
  64.     return @bestp 

dask = (msg)->

  1. answer = "" 
  2. data = JSON.parse msg  
  3. console.log data  
  4.    
  5. d = new dynamicPack()  
  6. console.log d.pack(data)  
  7. answer += "動態(tài)規(guī)劃,選擇物品"+d.print d.pack(data),data  
  8. return answer 

kask = (msg)->

  1. answer = "" 
  2. data = JSON.parse msg  
  3. console.log data  
  4.    
  5. k = new knapPack()  
  6. answer += "分支限界,***解"+k.print data  
  7. return answer 

io.listen(server).on “connection”,(socket)->

  1. socket.on "msg",(msg)->  
  2.     ##console.log msg  
  3.     socket.emit "msg",{time:getCurrentTime(),text:"calculating..."}  
  4.     socket.emit "msg",{time:getCurrentTime(),text:dask(msg)}  
  5.     socket.emit "msg",{time:getCurrentTime(),text:kask(msg)}  
  6.     ##socket.broadcast.emit "msg",data  
  7.    
  8. console.log "#{getCurrentTime()}:Connected" 

前端實現(xiàn)部分:

  • 輸入示例:{"n":10,"m":3,"w":[3,4,5],"v":[4,5,6]}其中n為背包容量,m為物品數(shù)量

原文鏈接:http://my.oschina.net/gongbaodd/blog/293129

責(zé)任編輯:林師授 來源: GongBaoDD的博客
相關(guān)推薦

2017-09-05 15:30:00

JavascriptSocket.ioNode.js

2019-07-26 14:40:58

Vue.jsSocket.IO前端

2015-07-15 12:53:05

Node.jsSocket.io遠程控制

2013-04-09 12:18:45

socket.ioC服務(wù)器

2022-06-13 07:33:57

socketReact組件

2012-08-01 14:16:27

IBMdW

2013-10-23 17:17:31

Node.jsdoT

2024-06-07 07:54:00

Solana框架區(qū)塊鏈

2016-11-22 13:25:28

Apache Spar大數(shù)據(jù)

2011-12-13 12:32:54

JavaNIO

2012-01-09 13:24:27

2011-09-06 09:48:41

MTK平臺

2021-01-19 05:46:45

背包數(shù)組容量

2021-06-21 11:11:29

LinuxIO磁盤IO

2023-12-13 09:45:49

模型程序

2019-02-18 09:00:00

TextRank算法自然語言處理Python

2024-12-19 08:00:00

FAST算法OpenCV目標(biāo)跟蹤

2021-01-15 13:54:04

Portainer.iDocker運維

2021-01-15 13:37:43

Portainer.iDocker運維

2017-10-23 10:13:18

IO底層虛擬
點贊
收藏

51CTO技術(shù)棧公眾號