用coffee和socket.io实现先说说为什么写这些吧。做程序员太难了。真的,时间长了,我真的没有搬砖的高成就感。至少我能把冬楼打造出来(身材也能练好),要知道哪天有个小子把硬盘格式化了就什么都没有了。这学期明显没把前端放在心上。。。汗,以后还想吃饭,但是这学期绝对没有休息,反而忙了很多很多人可能觉得很无聊的事情.因为这学期无聊的事情太多,耽误了很多,也让指导老师失望了,自己也很自卑,需要好好收拾一下,调整好自己的心态。因为很多都是作业的奇思妙想,所以作业,不胡闹就不是作业,还望大家批评指正。也许是因为哪篇文章可以解决问题。我想试试Markdown。靓照一张进入正题后台现实部分:io=require“socket.io”http=require“http”fs=require“fs”express=require“express”mime=require“mime”app=express()server=http.createServerappserver.listen8080console.log“Listening8080”app.get“/”,(req,res)->path="#{__dirname}/console.html"res.writeHead200,"Content-Type":mime.lookup(路径)res.endfs.readFileSyncpathapp.get“/jquery.min.js”,(req,res)->path="#{__dirname}/jquery.min.js"res.writeHead200,"Content-Type":mime.lookup(path)res.endfs.readFileSyncpathapp.get“/bootstrap.min.js”,(req,res)->path="#{__dirname}/bootstrap.min.js"res.writeHead200,"内容-输入":mime.lookup(path)res.endfs.readFileSyncpathapp.get“/bootstrap.min.css”,(req,res)->path="#{__dirname}/bootstrap.min.css"res.writeHead200,“内容类型”:mime.lookup(路径)res.endfs.readFileSyncpathgetCurrentTime=->d=newDate()return“#{d.getFullYear()}-#{d.getMonth()+1}-#{d.getDate()}#{d.getHours()}:#{d.getMinutes()}:#{d.getSeconds()}”classdynamicPackpack:(data)->c=[]i=0j=0whileix=[]i=data.mn=data.nstr=""#console.logc[i][m]whilei>0ifc[i][n]>c[i-1][n]x[i-1]=1n-=data.w[i-1]elsex[i-1]=0i--i=0count=0whilei@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<@mperp[i]=@v[i]/@w[i]@put[i]=0;i++console.logperpi=0while<@mj=i+1whilej<@mifperp[i]console.logi@boundiifi>@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=@cvwhilei<=@mand@w[i]<=leftwleftw-=@w[i]b+=@v[i]i++b+=@v[i]/@w[i]*leftwifi<@mreturnbprint:(data)->@pack(data)console.log@wconsole.log@v@backtrack(0)console.log@putreturn@bestpdask=(msg)->answer=""data=JSON.parsemsgconsole.logdatad=newdynamicPack()console.logd.pack(data)answer+="动态规划,选择物品"+d.printd.pack(data),datareturnsanswerkask=(msg)->answer=""data=JSON.parsemsgconsole.logdatak=newknapPack()answer+="分支限界,***解”+k.printdatareturnsanswerio.listen(server).on“connection”,(socket)->socket.on"msg",(msg)->##console.logmsgsocket.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"前端实现部分:输入示例:{"n":10,"m":3,"w":[3,4,5],"v":[4,5,6]}其中,n为背包容量,m为物品数量。原文链接:http://my.oschina.net/gongbaodd/blog/293129