导航:首页 > 编程语言 > java01背包

java01背包

发布时间:2024-11-03 04:57:01

A. 魔兽私服

主要的你要有2件东西
第一:魔兽世界客户端
第二:数据库

这里废话就不说了,本人架设过WOWSF,说说数据库这块,一般不会编程的人都觉得很神秘。一般都采用ODBC和MYSQL,ODBC是电脑自带的,MYSQL因为比较小功能全,很方便使用推荐这两个。网上看有人写的比较全大部分引用的懒得重新再写了,我看还比较详细,关键处做了注释没修改。比较难懂的就是SQL语句那里,照做就OK。mysql用得是可视化界面很好操作你要没用过就下中文版,有中文的。

mysql4.0.2
mysql-control-center0.9.4
MyODBC-standard-3.51
(上面3个都是架设服务器用的数据库端和数据库管理端:mysql4.0.2是数据库主程序,mysql-control center0.9.4是数据库管理界面程序,MyODBC是MySQL与Windows数据服务的连接驱动)
当然还有wow beta3客户端和3734(就是0.8.0)补丁
需要的数据库有:
25M的python.sql
7M的python.sql
几个1k左右的commands.sql,creatures_mov.sql,gmlogin.sql,npc_text.sql,sh.sql,trainers.sql

(注意以上的数据库要下载的然后导入mysql)
1. 先安装mysql,mysqlcc,ODBC然后重起。
重起后看看右下的系统托盘里有没有个红绿灯的图标,没有的话运行c:\mysql\bin\winmysqladmin.exe
开始架服务器:
运行 mysqlcc ,新建服务器:
name:python
host:localhost
user:root
password:空
2. 确定后双击“ python ”,右键点击 DataBases ,新建数据库取名 wow 。
右击User Administration,新建用户。名字随便,Hose:localhost,密码自己记好。
选上All Privileges,右边在Global Privileges和wow上打对勾,应用。
再把系统自动添加的@localhost用户的All P....和Glo...,wow上也打上对勾应用。
3. 不关程序,到控制面板,管理工具,服务:mysql。
停止服务,在参数空白行里输入
safe_MySQLd -O key_buffer=16M -O table_cache=128 -O sort_buffer=4M -O record_buffer=1M -O max_allowed_packet=30M
启用服务。
4. 回到mysqlcc,右键点击/Databases/wow,开启新窗口。
点击新开窗口上面的SQL按钮,再选择菜单里的文件\打开...
打开25M的python.sql(加载需要好长时间)然后点击按钮栏里的“!”按钮。
看执行成果,没有X的就是成功了,有错误的话删掉wow数据库,从“3.”处重新开始。
5. 打开控制面板\管理工具\ODBC数据源(不同的操作系统名字可能不同)
选择:系统DNS,添加,MySQL ODBC3.51 Driver。
Date Source Name:(2.里建立的用户名)
Host/Server Name(or IP):localhost
DataBase Name:wow
User:(2.里建立的用户名)
Password:(2.里建立的密码)
6. 启用python服务器,但停止wow库。把7M的python.sql和N个1K的.sql文件拷贝到c:\mysql\bin\
运行c:\mysql\bin\mysql.exe
命令行里输入\. python.sql
\. commands.sql
依此类推...
7. 加载完毕后启动wow库,运行wowpython0.89,输入:
host 127.0.0.1(或者你的外网IP或者局域网IP)
lanhost *.*.*.*(你的局域网IP)
db localhost (你刚才“2.”建立的用户名) (你输入的密码) wow
start
出现服务器开始运行的提示后就可以运行游戏了。
注意事项:只是想单机玩的host地址随便,lanhost用开始菜单/运行/cmd/ipconfig看到内网地址。
想局域网玩的host,lanhost都用内网IP。想架外网服务器的就要知道自己的外网实际IP了。
8. 自己玩或者局域网内玩游戏,进游戏登陆界面后按“~”打开控制台,输入“realmlist (你在“7.”所输入的内网IP)”使用wow表account项里面的GM账号登陆游戏。
OK!架设完毕!

scripts/items.scp(物品资料与代码)scripts/creatures.scp(npc资料与代码)saves/players.save(玩家资料)scripts/areatrigge
scripts/items.scp(物品资料与代码)
scripts/creatures.scp(npc资料与代码)
saves/players.save(玩家资料)
scripts/areatriggers.scp(传诵换场景的资料)
scripts/emu.conf(模拟器连接资料,在这里修改IP,要让别的电脑也进来玩就改成你的IP)
saves/world.save(刷NPC的资料)
scripts/quests.scp(任务的资料)
scripts/classes.scp(应该是属于初始的天赋)
scripts/spellcost.scp(技能代码)
scripts/pages.scp(npc说话定义)
scripts/gameobjects.scp(游戏中物体名称,模型号定义)
scripts/creatures.scp(npc定义)
scripts/defines.scp(应该是所有代码编号的定义。如在spellcost.scp中写[spell10]price=120也就是说,学习SPELL_EFFECT_HEAL(在defines.scp中的208行)需要120铜币。)
--------------------------------------------------------------------------
emu文件

[system]
server_name=LocalServer——>服务器名称
server_rules=PvP
http_host=127.0.0.1——>HTTP注册页面(需先搭建IIS服务器)
http_port=8080
rs_host=127.0.0.1——>填你IP
rs_port=3724
ws_host=127.0.0.1——>填你的IP就对啦
ws_port=8085
world_sleep_ms=500——>照字面来看是白天的时间
network_sleep_ms=100——>那么这个就是晚上的时间啦
connection_timeout=300——>传说卡号和这个有关改小就对啦
loglevel=1
save_text_ppoints=yes——>传说修改经验倍数要改成yes
spawns_pes_distance=64.0
max_players=100——>最大玩家数
这行贴不上来——>不知道干吗的应该不能少就是了

[game]
linger=20——>刷怪间隔秒
npc_corpse_delay=60——>怪物尸体存在时间妙
autosave_time_minutes=30——>自动保存间隔秒
health_growing_rate=1——>回血率越大越块
mana_growing_rate=10——>回魔率
energy_growing_rate=10——>回能量
delete_not_used_accounts_days=0——>删除多少天未登录的帐号

[bot]
rs_host=192.168.0.1-------------->这里填本地IP
rs_port=3724
account=WAD2
password=TEST

照以上改法,传说内外网都能连上。
--------------------------------------------------------------------------
DB2Script文件夹中各scp文件含义——quests.scp篇

定义如下:

[quest编号]任务编号
name=SharptalonsClaw//任务名
desc=//任务提示
levels=2530//任务限制等级
zone=39//任务区域
quest_flags=08//任务标记类型
src_item=16305//任务完成所需物品编号
reward_xp=2450//任务奖励经验
reward_choice=60761//任务奖励物品选择:编号,数量
reward_choice=30701//同上
reward_choice=601//同上
deliver=1821//交付物品:编号,数量
reward_gold=25//任务奖励金钱:铜币
kill=610//任务需要杀目标:编号,数量

——pages.scp篇

定义如下:

[page编号]话语编号
next_page下一个话语的编号
text话语内容

——spellcost.scp篇

定义技能学习需求,含义如下:

[spell编号]//技能编号
reqspell=72//学习所需技能
price=1100//学习所需金钱,铜币

npc训练师那里的限制吧。把所有的reqspell去掉,把price都改成1……

——items.scp篇

对游戏装备的定义,含义如下:
[item编号]
skill=0//熟练度
stackable=1//可堆叠数量
name=WornShortsword//名称
class=2//类型编号,对应defines.scp中定义
subclass=7//类别编号,对应defines.scp中定义
model=1542//模型编号
quality=1//品质
buyprice=35//买入价格
sellprice=7//卖出价格
inventorytype=21//存储类型
classes=07FFF//使用职业限制
races=01FF//使用种族限制
level=2//物品等级
reqlevel=1//需求人物等级
damage=130//伤害
delay=1900//延迟
language=1//语言
material=1//表面贴图
sheath=3//属性值,这里指大武器,左手装备
rability=20//耐久度

——gameobjects.scp篇

这个文件是对游戏中出现的怪物的定义,其含义如下:
[gameobj编号]
name=OldLionStatue//怪物名
type=2//怪物类型
model=6//所用模型
sound0=43//第一种声音
sound1=73//第二种声音

汉化的话,应该是在这个文件吧

——defines.scp篇

Script文件夹中的定义,都由defines.scp文件开始。这里定义了几乎所有东西的编号。首先我们来看看这个文件的内容。

按顺序是:
races节:定义种族编号。
classes节:定义职业编号。
powers节:定义能量类型编号。
classes节:(注意和前面的区分)定义装备类型编号。
subclasses节:定义装备类别编号。
itemtypes节:定义物品编号。
(ps:前面三个地方很容易搞混,不知道写的时候是怎么想的*_*)
sheathtypes节:定义武器属性编号,如单手,双手
slots节:定义饰品编号
creaturetypes节:npc类型编号
(接下来的节没有名称,汗!我们以数字n来代替)
1节:世界语言定义编号
2节:技能(魔法)效果编号定义
3节:技能(魔法)动作模型编号定义
4节:人物状态编号定义
5节:游戏物品(城市中)编号定义
6节:表情编号定义
7节:人物动作动画编号定义
8节:物品动画编号定义
9节:(不是很明白)推测是砍人动作动画的编号定义
10节:似乎是射箭动作动画的编号定义
11节:锁类型编号
12节:技能训练师的编号定义

这个文件中定义了游戏世界中几乎所有东西的编号,在下面的文件中出现的编号,都可以在这里找到。要注意的是,编号采用了2种方式。
首先是在每一节下面都是从1开始编号的。对应的调用应该是在scp文件中对应变量,写出这个编号。如spell,在spellcost.scp文件中,写[spell1]就表示这个魔法的效果对应2节下的编号1,同时对应3节下的编号1。
第二种是几节都拥有顺序的编号,7至10节的动画编号定义就是这样。在第7节中,是写出了0x0一直到0x86,8节中之写出了0x87,后面应该是使用得偏移量写的,如8节中写1就表示0x88。以此类推。

——classes.scp篇

classes.scp包含对于种族的初始化定义。以暗夜精灵为例,其含义如下:
startmap=1//Kalimdor出生地图编号
startzone=14//Teldrassil出生地点编号
startpos=10311.3832.4631326.411.0出生地点位置
startstats=1725192020//Str,Agi,Stm,Int,Spr初始化属性值
bodymale=55推测是男性身体高度值
bodyfemale=56推测是女性身体高度值
skill=98300300//Language:Common指种族语言
spell=668//Language:Common指spell编号
skill=113300300//Language:Darnassian指种族语言
spell=671//Language:Darnassian指spell编号
spell=019CB//Attack指spell编号
spell=81//Dodge指spell编号
skill=1621300//Unarmed
spell=203//Unarmed指spell编号
spell=20580//Shadowmeld指spell编号
spell=20582//Quickness指spell编号
spell=20583//NatureResistance指spell编号
spell=20585//WispSpirit指spell编号
//RangeAttacks远程攻击
spell=75//AutoShot指spell编号
spell=2764//Throw指spell编号
skill=451300//Bows
spell=264//Bows指spell编号
skill=461300//Guns
spell=266//Guns指spell编号
skill=1761300//Thrown
spell=2567//Thrown指spell编号

上面的定义中,spell是指数据库中技能魔法的编号,而skill是指的熟练度。但是我不明白skill中3个数值的表示是什么意思。达人指教!

——areatriggers.scp篇

areatriggers.scp文件包含世界跳转的位置。
其含义如下:
[areatrigger编号]
note=注释
pos=所属地图x坐标y坐标z坐标
topos=目标地图目标x坐标目标y坐标目标z坐标
totrigger=目标转换点

[areatrigger编号]定义转换点的编号,在totrigger中使用。
note,注释
pos,转换点所在位置
topos,目标转换点所在位置
totrigger,转换到某个转换点

一般更新都是这里的东西了看看吧也许有你想要的答案
--------------------------------------------------------------------------
如果用户被卡主,作为GM怎么办?
就是说,客户端中断了,再连接就说此用户已经在线了,不能登陆,作为GM怎么解决?
我以为刷新后就可以了,结果等了半个小时也不行,怎么办呢?

connection_timeout=300的值设置小一点,单位是秒,一般1分半到两分钟就行了!

产生新NPC的方法

先知道相应NPC模板代码比如99999
用GM账号跑到要放导师的地方:
.addspawn99999在GM站立的地方安放一个NPC的刷新点。
.setspawndist00该刷新点刷新的怪物自主移动范围为0-0
.setspawntime11该刷新点刷新怪物的时间间隔为1-1秒。

出现小人既刷新点
等几秒钟出现啦

清除刷新点的GM命令

游戏里选定你要删除的小人,输入.del

改经验:
save_text_ppoints=yes
delete_not_used_accounts_days=0
cript目录下的startup.tcl文件
setxp[expr{5*$victim_level+5}]这句
前面的5是倍数,后面的5是直接得到的经验,改哪个都可以
if{$lvldiff<=-5}{return0}
-5是怪少与你5级就没经验,你可以该多点,这样就不会打一只怪升了很多级再打没经验了

关于HP,MP及存盘不能正常设置:
1,打开DB2.0安装文件夹
2,打开scripts子文件夹
3,打开emuCONT文件,按照“办法”修改。
大家可能只是修改了主文件夹下的emuCONT,所以造成无法存盘现象。

如何保存

CTRL+C之后过几秒显示saveing的提示后会自动关闭请注意
或者GM号进游戏打.save

如何联机或者说如何做服务器让人玩

琢磨一下emu文件上面有详细解释

我想把卡号的移动到我身边该用什么命令呢?

.goname人物名-你飞到该人物身旁
.namego人物名-把该人物拉到你身旁

我想玩生产系的。请问怎么样改资源的刷新速度

举个例子来说吧:
输入
.addspawn
.setspawngo1731//加一个coppervein铜矿
.setspawntime100200//100-200秒重新生成,你改小就可以刷的快了
.setspawndist100200//每次重刷的距离在100-200尺,这可以避免矿一直出现在同一地方

server_name=LocalServer——>服务器名称
http_host=127.0.0.1——>HTTP注册页面(需先搭建IIS服务器)
delete_not_used_accounts_days=0——>删除多少天未登录的帐号
(1)服务器:先去本论坛的[服务器下载区]下载最新的javaWOW服务器或者WAD服务器,如果您使用的是以前的服务器版本,强烈建议你重新下载。因为技术是一个发展的过程,越新的服务器功能越强大,BUG也越少。
(2)客户端:建议购买9C发售的中文客户端,至于为什么,不说也知道的。如果你英文实在很好,好到每个物品每个NPC你都能翻译的话,那就可以不听我的劝告了。官方网站上有客户端下的。嫌下得慢的话可以去买,很便宜的。
(3)两个都安装好,不一定要在同一目录。
(4)修改客户端目录下的 realmlist.wtf (用记事本打开)文件中的 IP地址为自己的IP,例如 单机的就改成 set realmlist 127.0.0.1 要进局域网的 就改成 set realmlist xxx.xxx.xxx.xxx 其中的xxx.xxx.xxx.xxx是你的局域网IP。

(5)配置你的IP设置 ,启动服务器文件夹下的 IP-Configuration.exe 修改,把所有看得的IP全改成自己的。

(5)好了,现在可以启动服务器了。主程序是WoWemu.exe或者是No Read map 1.3.1V1.8.exe。
(6)启动后会出现一个DOS窗口,稍等,......
(7)9:26:13:M:Loading world...
9:26:13:M:Loading PP...
9:26:13:M:done, 365635 ppoints.
好了,到这里就完全启动好了。
(8)打开http://你的IP:8080 注册账号。单机的话是http://127.0.0.1:8080,也可以用服务器文件夹下的Account Creator.exe 创建账号和GM账号。
(9)局域网玩家要进你的服务器的机器,必须按第四步中的方法修改
set realmlist 你的IP 。
(10)好了,邀请你的好友一起体验吧

. usr hp 〈hp〉 〈max hp〉 : 改变HP选择的用户唯一.
.usr mana 〈mana〉 〈max mana〉 : 改变选择的用户mana .
.usr gold 〈num〉 : 改变选择的用户金钱..usr lvl 〈num〉 : 改变选择的用户的标准.
.usr speed 〈num max 30〉 : 改变选择的用户的speed.
.usr wspeed 〈num max 30〉 : 改变选择的用户的wspeed.
.usr scale 〈num .02-4〉 : 改变选择的用户的 scale.
.usr mount 〈id 1-64〉 : 改变选择的用户的登入.
.usr exp 〈exp〉 : 改变选择的用户的EXP.
.usr aura 〈aura id〉 : 改变选择的用户的aura.
.usr spell 〈spell id〉 :增加一个咒语 .
.usr skin 〈skin id〉 : 改变选择的用户的Skin.
.usr talentxp 〈num〉 : 增加天分点.

.gm pass 〈oldpass〉 〈newpass〉 : 改变您真正的通行证为帐户lvl .
.gm off : 取消显示〈GM〉用户
.gm on : 增加显示〈GM〉用户
.gm kick 〈name〉 : 踢命名的用户.
.gm save : 保存.
.gm announce 〈message〉 : 寄发一则消息到世界.

.move where : 移动您给的座标.
.move there 〈name〉 : 移动到命名的用户.
.move here 〈name〉 : 移动命名的用户到您着.
.move fast 〈x〉 〈y〉 〈z〉 :向您座标移动.
.move world 〈x〉 〈y〉 〈z〉 〈m〉 :向您座标移动和地图.
.move town 〈town〉 : 移动您键入的镇.
.move prog : 移动您向程序员小岛.
.move isle :移动您向管理员小岛.

.npc info :显示信息在选择的npc .
.npc mobs 〈modelid〉 〈npcflags〉 〈faction〉 〈level〉 〈name〉 : 产生NPC在你的位置.
.npc taxi : 增加一辆出租汽车.
.npc spell 〈spellid〉 〈price〉 :增加一个咒语来教练员NPC .
.npc rmvspell 〈spellid〉 :从教练员取消咒语NPC .
.npc item 〈itemid〉 〈amount〉 :增加一个项目来教练员NPC .
.npc rmvitem 〈itemid〉 :从教练员去除项目NPC .
.npc itemmove 〈srcslot〉 〈dstslot〉 : 搬入项目贩卖者NPC .
.npc delete :删除NPC.
.npc level 〈level〉 : 改变选择的NPC 的标准.
.npc skin 〈skinid〉 : 改变选择的NPC 皮肤.
.npc faction 〈faction〉 :改变选择的NPC 的派别.
.npc name 〈name〉 :更改选择的NPC 的名字.
.npc flag 〈flag〉 : 改变选择的NPC 旗子.
.npc animfreq 〈frequency〉 : 改变选择的NPC 频率.
.npc random 〈num 0-1〉 :集合任意开关选择的NPC .
.npc addmove :增加一个小站或设置NPC.
.npc run 〈num 0-1〉 : 设置奔跑开关选择的NPC .
.npc state 〈num 0-2〉 :设置如果选择的NPC NPC 意志自动攻击.
.npc scale 〈num〉 :选择的NPC集合scale.
.npc hpmin 〈num〉 : 设置选择的NPC最小HP .
.npc hpmax 〈num〉 : 设置选择的NPC最大HP .

.admin ban 〈name〉 :禁令命名的用户从服务器
.admin lvl 〈name〉 〈lvl account〉 :改变命名的用户lvl 帐户.
.admin addspirit : 增加一种Spirit来世界.
.admin die :使用户死
.admin revive :使用户复活
.admin update 〈old〉 〈new〉 : 更新Opcodes

.addgo : 在你的坐标添加游戏对象
.add : 添加项目到你的背包中.
.addnpc : 添加NPC到游戏.
.del : 删除目标NPC
.setlevel : 设置个人或NPC的等级
.setmodel : 给NPC或个人设置模型数量.
.learn : 学习魔法的数目
.save : 保存文件.
.rehash : 改写目标.
.flag1 : 设置有毛病的标记.
.ppon : 打开pp系统.
.ppoff :关闭pp系统.
.turn : 转动NPC面朝你.
.come : NPC来到你的位置.
.go : 去世界坐标.
.gotrigger: 进入世界范围的位置,参数: trigger_number
.kill : 杀死选择的NPC或个人.
.killallnpc : 杀死所有的NPC的形象.
.resurrect : 复活选择的个人.
.setsize : 设置NPC的大小.
.setspeed : 设置NPC或个人的速度
.setflags : 设置NPC或O.G的面具. 参数: 〈ftype〉 〈flags〉
.addspawn : 添加大量的点到你的位置. 参数 : [〈npc entry〉] [〈npocs number〉]
.setnpcspawn : 添加条目和数目作成大量NPC到大量的点
.setnpcgo : 设置条目由于大量游戏目标到大量点
.setspawndist : 设置小和大距离到大量
.setspawntime : 设置小和大的时间到大量.
.setxp : 设置经验到个人.
.paralyse : 不动和动到个人或NPC.
.setaura : 设置预兆数目
.exploration : 打开你地图的位置.
.dismount : 卸下你.
.listsp :列出你的魔法.
.listsk :列出你的技能.
.delsp : 忘记魔法
.delsk : 忘记技能.
.info : 附近NPC的信息.
.online : 显示在线玩家数目
.goname : 移动到输入名字的个人或NPC.
.goguid : 移动到行会.
.targetgo : 尝试移动到最近的玩家(定位最近的object)
.targetlink : 尝试到连接目标OF选择目标
.move :传送目标.
.retcl : 重装TCL
.rescp : 重装 SCP.
.clearqflags : 清楚寻找标记
.bytes : for debug
.pingmm : 制造点在你的地图
.adddyn : 测试到竞技

1.架设服务器必须安装的NET Framework 2.0.exe

2.首先修改服务端内的wowemu.key文件
server_name=Dokj 这行是服务器名称,假如要中文,请先用"汉字转"转换下
ws_host=127.0.0.1 这里是服务器IP,可以用域名
ws_port=8085

3.然后打开maps文件夹,运行BatCreator.exe,然后选择Locate the folder with wow.exe指定一下客户端的路径,选好后按一下Create,再按Extract,中途需要按两次y确认,第二次输入y以 后窗口会自动关闭.

4.接下来打开scripts文件夹内的emu.conf文件,用记事本打开
[banned]
//ip=127.0.0.1/255.255.255.0 在127.0.0.1的地方输入IP,默认是单机的

5.账号可以通过服务端自带的DButil.exe程序进行添加,打开后选择
Edit Accounts,方法是:Find的左边的空格内输入账号,password是密码,plevel
是GM权限等级,6是最高,然后按一下Add就可以了(注意:添加账号必须在服务器开启以后才行)

6.运行服务端程序WoWemu.exe,等待一段时间后,服务器就开好了.

7.客户端需要打补丁.我试过不打补丁就出现版本无法严正的错误

把"登陆器"解压到客户端,然后运行"SF补丁安装程序.bat",结束以后.用记事本打开realmlist.wtf,修改里面的IP,改成你的服务器IP,改完后运行wow.exe就可以进入游戏了,别忘了启动游戏后用DButil.exe添加账号..

8.这是最重要的一点.请大家每次关闭服务器之前.输入".save"保存一下,不然下次开F以后所有东西都会没有的,比如账号..切记!!!!!!

B. java语言,背包问题,从Excel表中读取数据

基本概念
问题雏形
01背包题目的雏形是:
有N件物品和一个容量为V的背包。第i件物品的体积是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。
从这个题目中可以看出,01背包的特点就是:每种物品仅有一件,可以选择放或不放。
其状态转移方程是:
f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]}
对于这方方程其实并不难理解,方程之中,现在需要放置的是第i件物品,这件物品的体积是c[i],价值是w[i],因此f[i-1][v]代表的就是不将这件物品放入背包,而f[i-1][v-c[i]]+w[i]则是代表将第i件放入背包之后的总价值,比较两者的价值,得出最大的价值存入现在的背包之中。
理解了这个方程后,将方程代入实际题目的应用之中,可得
for (i = 1; i <= n; i++)
for (j = v; j >= c[i]; j--)//在这里,背包放入物品后,容量不断的减少,直到再也放不进了
f[i][j] = max(f[i - 1][j], f[i - 1][j - c[i]] + w[i]);

问题描述
求出获得最大价值的方案。
注意:在本题中,所有的体积值均为整数。
算法分析
对于背包问题,通常的处理方法是搜索。
用递归来完成搜索,算法设计如下:
int make(int i, int j)//处理到第i件物品,剩余的空间为j 初始时i=m , j=背包总容量
{
if (i == 0) return 0;
if (j >= c[i])//(背包剩余空间可以放下物品 i )
{
int r1 = make(i - 1, j - w[i]);//第i件物品放入所能得到的价值
int r2 = make(i - 1, j);//第i件物品不放所能得到的价值
return min(r1, r2);
}
return make(i - 1, j);//放不下物品 i
}
这个算法的时间复杂度是O(n^2),我们可以做一些简单的优化。
由于本题中的所有物品的体积均为整数,经过几次的选择后背包的剩余空间可能会相等,在搜索中会重复计算这些结点,所以,如果我们把搜索过程中计算过的结点的值记录下来,以保证不重复计算的话,速度就会提高很多。这是简单的“以空间换时间”。
我们发现,由于这些计算过程中会出现重叠的结点,符合动态规划中子问题重叠的性质。
同时,可以看出如果通过第N次选择得到的是一个最优解的话,那么第N-1次选择的结果一定也是一个最优解。这符合动态规划中最优子问题的性质。
解决方案
考虑用动态规划的方法来解决,这里的:
阶段:在前N件物品中,选取若干件物品放入背包中
状态:在前N件物品中,选取若干件物品放入所剩空间为W的背包中的所能获得的最大价值
决策:第N件物品放或者不放
由此可以写出动态转移方程:
我们用f[i][j]表示在前 i 件物品中选择若干件放在已用空间为 j 的背包里所能获得的最大价值
f[i][j] = max(f[i - 1][j - W[i]] + P[i], f[i - 1][j]);//j >= W[ i ]
这个方程非常重要,基本上所有跟背包相关的问题的方程都是由它衍生出来的。所以有必要将它详细解释一下:“将前i件物品放入容量为v的背包中”这个子问题,若只考虑第i件物品的策略(放或不放),那么就可以转化为一个只牵扯前i-1件物品的问题。如果不放第i件物品,那么问题就转化为“前i-1件物品放入容量为v的背包中”,价值为f[v];如果放第i件物品,那么问题就转化为“前i-1件物品放入已用的容量为c的背包中”,此时能获得的最大价值就是f[c]再加上通过放入第i件物品获得的价值w。
这样,我们可以自底向上地得出在前M件物品中取出若干件放进背包能获得的最大价值,也就是f[m,w]
算法设计如下:
int main()
{
cin >> n >> v;
for (int i = 1; i <= n; i++)
cin >> c[i];//价值
for (int i = 1; i <= n; i++)
cin >> w[i];//体积
for (int i = 1; i <= n; i++)
f[i][0] = 0;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= v; j++)
if (j >= w[i])//背包容量够大
f[i][j] = max(f[i - 1][j - w[i]] + c[i], f[i - 1][j]);
else//背包容量不足
f[i][j] = f[i - 1][j];
cout << f[n][v] << endl;
return 0;
}

由于是用了一个二重循环,这个算法的时间复杂度是O(n*w)。而用搜索的时候,当出现最坏的情况,也就是所有的结点都没有重叠,那么它的时间复杂度是O(2^n)。看上去前者要快很多。但是,可以发现在搜索中计算过的结点在动态规划中也全都要计算,而且这里算得更多(有一些在最后没有派上用场的结点我们也必须计算),在这一点上好像是矛盾的。

C. 01背包问题变种:从给定的N个正数中选取若干个数之和最接近M的JAVA写法

BIAS0:= (C-MA(C,2))/MA(C,2)*100;
BIAS1 := (C-MA(C,12))/MA(C,12)*100;
BIAS2 := (C-MA(C,26))/MA(C,26)*100;
BIAS3 := (C-MA(C,48))/MA(C,48)*100;
HXL:=V/CAPITAL*100;
D1:=INDEXC;
D2:=MA(D1,56);
DR2:=D1/D2<0.94;
E1:=(C-HHV(C,12))/HHV(C,12)*10;
E2:=(C-REF(C,26))/REF(C,26)*10;

D. 电脑里常用的的英语有那些(汉语意思)

第一部分、计算机算法常用术语中英对照
Data Structures 基本数据结构
Dictionaries 字典
Priority Queues 堆
Graph Data Structures 图
Set Data Structures 集合
Kd-Trees 线段树
Numerical Problems 数值问题
Solving Linear Equations 线性方程组
Bandwidth Rection 带宽压缩
Matrix Multiplication 矩阵乘法
Determinants and Permanents 行列式
Constrained and Unconstrained Optimization 最值问题
Linear Programming 线性规划
Random Number Generation 随机数生成
Factoring and Primality Testing 因子分解/质数判定
Arbitrary Precision Arithmetic 高精度计算
Knapsack Problem 背包问题
Discrete Fourier Transform 离散Fourier变换
Combinatorial Problems 组合问题
Sorting 排序
Searching 查找
Median and Selection 中位数
Generating Permutations 排列生成
Generating Subsets 子集生成
Generating Partitions 划分生成
Generating Graphs 图的生成
Calendrical Calculations 日期
Job Scheling 工程安排
Satisfiability 可满足性
Graph Problems -- polynomial 图论-多项式算法
Connected Components 连通分支
Topological Sorting 拓扑排序
Minimum Spanning Tree 最小生成树
Shortest Path 最短路径
Transitive Closure and Rection 传递闭包
Matching 匹配
Eulerian Cycle / Chinese Postman Euler回路/中国邮路
Edge and Vertex Connectivity 割边/割点
Network Flow 网络流
Drawing Graphs Nicely 图的描绘
Drawing Trees 树的描绘
Planarity Detection and Embedding 平面性检测和嵌入
Graph Problems -- hard 图论-NP问题
Clique 最大团
Independent Set 独立集
Vertex Cover 点覆盖
Traveling Salesman Problem 旅行商问题
Hamiltonian Cycle Hamilton回路
Graph Partition 图的划分
Vertex Coloring 点染色
Edge Coloring 边染色
Graph Isomorphism 同构
Steiner Tree Steiner树
Feedback Edge/Vertex Set 最大无环子图
Computational Geometry 计算几何
Convex Hull 凸包
Triangulation 三角剖分
Voronoi Diagrams Voronoi图
Nearest Neighbor Search 最近点对查询
Range Search 范围查询
Point Location 位置查询
Intersection Detection 碰撞测试
Bin Packing 装箱问题
Medial-Axis Transformation 中轴变换
Polygon Partitioning 多边形分割
Simplifying Polygons 多边形化简
Shape Similarity 相似多边形
Motion Planning 运动规划
Maintaining Line Arrangements 平面分割
Minkowski Sum Minkowski和
Set and String Problems 集合与串的问题
Set Cover 集合覆盖
Set Packing 集合配置
String Matching 模式匹配
Approximate String Matching 模糊匹配
Text Compression 压缩
Cryptography 密码
Finite State Machine Minimization 有穷自动机简化
Longest Common Substring 最长公共子串
Shortest Common Superstring 最短公共父串
DP——Dynamic Programming——动态规划
recursion —— 递归

第二部分、编程词汇
A2A integration A2A整合
abstract 抽象的
abstract base class (ABC)抽象基类
abstract class 抽象类
abstraction 抽象、抽象物、抽象性
access 存取、访问
access level访问级别
access function 访问函数
account 账户
action 动作
activate 激活
active 活动的
actual parameter 实参
adapter 适配器
add-in 插件
address 地址
address space 地址空间
address-of operator 取地址操作符
ADL (argument-dependent lookup)
ADO(ActiveX Data Object)ActiveX数据对象
advanced 高级的
aggregation 聚合、聚集
algorithm 算法
alias 别名
align 排列、对齐
allocate 分配、配置
allocator分配器、配置器
angle bracket 尖括号
annotation 注解、评注
API (Application Programming Interface) 应用(程序)编程接口
app domain (application domain)应用域
application 应用、应用程序
application framework 应用程序框架
appearance 外观
append 附加
architecture 架构、体系结构
archive file 归档文件、存档文件
argument引数(传给函式的值)。参见parameter
array 数组
arrow operator 箭头操作符
ASP(Active Server Page)活动服务器页面
ASP.NET worker process ASP.NET工作者进程
assembly 装配件、配件
assembly language 汇编语言
assembly manifest 装配件清单
assert(ion) 断言
assign 赋值
assignment 赋值、分配
assignment operator 赋值操作符
associated 相关的、相关联的
associative container 关联式容器(对应sequential container)
asynchronous 异步的
atomic 原子的
atomic operation 原子操作
attribute 特性、属性
authentication service 验证服务
authorization 授权
audio 音频
A.I. 人工智能
B2B integration B2B整合、B2B集成(business-to-business integration)
background 背景、后台(进程)
backward compatible 向后兼容、向下兼容
backup 备份
backup device备份设备
backup file 备份文件
bandwidth 带宽
base class 基类
base type 基类型
batch 批处理
BCL (base class library)基类库
binary 二进制
binary search 二分查找
binary tree 二叉树
binary function 双参函数
binary large object二进制大对象
binary operator 二元操作符
binding 绑定
bit 位
bitmap 位图
bitwise 按位...
bitwise 为单元进行复制;位元逐一复制,按位拷
bitwise operation 按位运算
block 块、区块、语句块
bookkeeping 簿记
boolean 布林值(真假值,true或false)
border 边框
bounds checking 边界检查
boxing 装箱、装箱转换
brace (curly brace) 大括号、花括号
bracket (square brakcet) 中括号、方括号
breakpoint 断点
browser applications 浏览器应用(程序)
browser-accessible application 可经由浏览器访问的应用程序
build 编连(专指编译和连接
built-in 内建、内置
bus 总线
business 业务、商务(看场合)
business Logic 业务逻辑
business rules 业务规则
buttons 按钮
bug 臭虫
by/through 通过
byte 位元组(由8 bits组成)
cache 高速缓存
calendar 日历
call 调用
callback 回调
call-level interface (CLI)调用级接口(CLI)
call operator 调用操作符
candidate key 候选键 (for database)
cascading delete 级联删除 (for database)
cascading update 级联更新 (for database)
casting 转型、造型转换
catalog 目录
chain 链(function calls)
character 字符
character format 字符格式
character set 字符集
CHECK constraints CHECK约束 (for database)
checkpoint 检查点 (for database)
check box 复选框
check button 复选按钮
child class 子类
CIL (common intermediate language)通用中间语言、通用中介语言
class 类
class declaration 类声明
class definition 类定义
class derivation list 类继承列表
class factory 类厂
class hierarchy 类层次结构
class library 类库
class loader 类装载器
class template 类模板
class template partial specializations 类模板部分特化
class template specializations 类模板特化
classification 分类
clause 子句
client application 客户端应用程序
client cursor 客户端游标 (for database)
code page 代码页
cleanup 清理、清除
CLI (Common Language Infrastructure) 通用语言基础设施
client 客户、客户端
client area 客户区
client-server 客户机/服务器、客户端/服务器
clipboard 剪贴板
clone 克隆
CLS (common language specification) 通用语言规范
code access security 代码访问安全
COFF (Common Object File Format) 通用对象文件格式
collection 集合
COM (Component Object Model) 组件对象模型
combo box 组合框
command line 命令行
comment 注释
commit 提交 (for database)
communication 通讯
compatible 兼容
compile time 编译期、编译时
compiler 编译器
component组件
composite index 复合索引、组合索引 (for database)
composite key 复合键、组合键 (for database)
composition 复合、组合
concept 概念
concrete具体的
concrete class 具体类
concurrency 并发、并发机制
constraint 约束 (for database)
configuration 配置、组态
connection 连接 (for database)
connection pooling 连接池
console 控制台
constant 常量
construct 构件、成分、概念、构造(for language)
constructor (ctor) 构造函数、构造器
container 容器
containment包容
context 环境、上下文
control 控件
cookie (不译)
拷贝
CORBA 通用对象请求中介架构(Common Object Request Broker Architecture)
cover 覆盖、涵盖
create/creation 创建、生成
crosstab query 交叉表查询 (for database)
CRTP (curiously recurring template pattern)
CTS (common type system)通用类型系统
cube 多维数据集 (for database)
cursor 光标
cursor 游标 (for database)
custom 定制、自定义
data 数据
data connection 数据连接 (for database)
Data Control Language (DCL) 数据控制语言(DCL) (for database)
Data Definition Language (DDL) 数据定义语言(DDL) (for database)
data dictionary 数据字典 (for database)
data dictionary view 数据字典视图 (for database)
data file 数据文件 (for database)
data integrity 数据完整性 (for database)
data manipulation language (DML)数据操作语言(DML) (for database)
data mart 数据集市 (for database)
data pump 数据抽取 (for database)
data scrubbing 数据清理 (for database)
data source 数据源 (for database)
Data source name (DSN) 数据源名称(DSN) (for database)
data warehouse 数据仓库 (for database)
dataset 数据集 (for database)
database 数据库 (for database)
database catalog 数据库目录 (for database)
database diagram 数据关系图 (for database)
database file 数据库文件 (for database)
database object 数据库对象 (for database)
database owner 数据库所有者 (for database)
database project 数据库工程 (for database)
database role 数据库角色 (for database)
database schema 数据库模式、数据库架构 (for database)
database script 数据库脚本 (for database)
data-bound 数据绑定 (for database)
data-aware control数据感知控件 (for database)
data member 数据成员、成员变量
dataset 数据集 (for database)
data source 数据源 (for database)
data structure数据结构
data table 数据表 (for database)
datagram 数据报文
DBMS (database management system)数据库管理系统 (for database)
DCOM (distributed COM)分布式COM
dead lock 死锁 (for database)
deallocate 归还
debug 调试
debugger 调试器
decay 退化
decision support 决策支持
declaration 声明
declarative referential integrity (DRI)声明引用完整性(DRI) (for database)
dection 推导
DEFAULT constraint默认约束 (for database)
default database 默认数据库 (for database)
default instance 默认实例 (for database)
default result set 默认结果集 (for database)
default 缺省、默认值
defer 推迟
definition 定义
delegate 委托
delegation 委托
dependent name
deploy 部署
dereference 解引用
dereference operator (提领)运算子
derived class 派生类
design by contract 契约式设计
design pattern 设计模式
destroy 销毁
destructor(dtor)析构函数、析构器
device 设备
DHTML (dynamic HyperText Markup Language)动态超文本标记语言
dialog 对话框
digest 摘要
digital 数字的
DIME (Direct Internet Message Encapsulation)直接Internet消息封装
directive (编译)指示符
directory 目录
dirty pages脏页 (for database)
dirty read 脏读 (for database)
disassembler 反汇编器
DISCO (Discovery of Web Services)Web Services的查找
disk 盘
dispatch 调度、分派、派发(我喜欢“调度”)
DISPID (Dispatch Identifier)分派标识符
distributed computing 分布式计算
distributed query 分布式查询 (for database)
DNA (Distributed interNet Application) 分布式网间应用程序
document 文档
DOM (Document Object Model)文档对象模型
dot operator (圆)点操作符
driver 驱动(程序)
DTD (document type definition) 文档类型定义
double-byte character set (DBCS)双字节字符集(DBCS)
mp 转储
mp file 转储文件
dynamic cursor 动态游标 (for database)
dynamic filter 动态筛选 (for database)
dynamic locking 动态锁定 (for database)
dynamic recovery 动态恢复 (for database)
dynamic snapshot 动态快照 (for database)
dynamic SQL statements 动态SQL语句 (for database)
dynamic assembly 动态装配件、动态配件
dynamic binding 动态绑定
EAI (enterprise application integration)企业应用程序集成(整合)
EBCO (empty base class optimization) 空基类优化(机制)
e-business 电子商务
EDI (Dlectronic Data Interchange)电子数据交换
efficiency 效率
efficient 高效
end-to-end authentication 端对端身份验证
end user 最终用户
engine 引擎
entity 实体
encapsulation 封装
enclosing class 外围类别(与巢状类别 nested class有关)
enum (enumeration) 枚举
enumerators 枚举成员、枚举器
equal 相等
equality 相等性
equality operator 等号操作符
error log 错误日志 (for database)
escape code 转义码
escape character 转义符、转义字符
exclusive lock 排它锁 (for database)
explicit transaction 显式事务 (for database)
evaluate 评估
event 事件
event driven 事件驱动的
event handler 事件处理器
evidence 证据
exception 异常
exception declaration 异常声明
exception handling 异常处理、异常处理机制
exception-safe 异常安全的
exception specification 异常规范
exit 退出
explicit 显式
explicit specialization 显式特化
export 导出
expression 表达式
facility 设施、设备
fat client 胖客户端
feature 特性、特征
fetch 提取
field 字段(java)
field 字段 (for database)
field length 字段长度 (for database)
file 文件
filter 筛选 (for database)
finalization 终结
firewall 防火墙
finalizer 终结器
firmware 固件
flag 标记
flash memory 闪存
flush 刷新
font 字体
foreign key (FK) 外键(FK) (for database)
form 窗体
formal parameter 形参
forward declaration 前置声明
forward-only 只向前的
forward-only cursor 只向前游标 (for database)
fragmentation 碎片 (for database)
framework 框架
full specialization 完全特化
function 函数
function call operator (即operator ()) 函数调用操作符
function object 函数对象
function overloaded resolution函数重载决议
functionality 功能
function template函数模板
functor 仿函数
GAC (global assembly cache) 全局装配件缓存、全局配件缓存
GC (Garbage collection) 垃圾回收(机制)、垃圾收集(机制)
game 游戏
generate 生成
generic 泛化的、一般化的、通用的
generic algorithm通用算法
genericity 泛型
getter (相对于 setter)取值函数
global 全局的
global object 全局对象
global scope resolution operator 全局范围解析操作符
grant 授权 (for database)
granularity 粒度
group 组、群
group box 分组框
GUI 图形界面
GUID (Globally Unique Identifier) 全球唯一标识符
hand shaking 握手
handle 句柄
handler 处理器
hard-coded 硬编码的
hard- 截屏图
hard disk 硬盘
hardware 硬件
hash table 散列表、哈希表
header file头文件
heap 堆
help file 帮助文件
hierarchy 层次结构、继承体系
hierarchical data 阶层式数据、层次式数据
hook 钩子
Host (application)宿主(应用程序)
hot key 热键
hyperlink 超链接
HTML (HyperText Markup Language) 超文本标记语言
HTTP pipeline HTTP管道
HTTP (HyperText Transfer Protocol) 超文本传输协议
icon 图标
IDE (Integrated Development Environment)集成开发环境
IDL (Interface Definition Language) 接口定义语言
identifier 标识符
idle time 空闲时间
if and only if当且仅当
IL (Intermediate Language) 中间语言、中介语言
image 图象
IME 输入法
immediate base 直接基类
immediate derived 直接派生类
immediate updating 即时更新 (for database)
implicit transaction隐式事务 (for database)
incremental update 增量更新 (for database)
index 索引 (for database)
implement 实现
implementation 实现、实现品
implicit 隐式
import 导入
increment operator 增加操作符
infinite loop 无限循环
infinite recursive 无限递归
information 信息
infrastructure 基础设施
inheritance 继承、继承机制
inline 内联
inline expansion 内联展开
initialization 初始化
initialization list 初始化列表、初始值列表
initialize 初始化
inner join 内联接 (for database)
in-place active 现场激活
instance 实例
instantiated 具现化、实体化(常应用于template)
instantiation 具现体、具现化实体(常应用于template)
integrate 集成、整合
integrity 完整性、一致性
integrity constraint完整性约束 (for database)
interprocess communication (IPC)进程间通讯(IPC)
interacts 交互
interface 接口
for GUI 界面
interoperability 互操作性、互操作能力
interpreter 解释器
introspection 自省
invariants 不变性
invoke 调用
isolation level 隔离级别 (for database)
iterate 迭代
iterative 反复的、迭代的
iterator 迭代器
iteration 迭代(回圈每次轮回称为一个iteration)
item 项、条款、项目
JIT compilation JIT编译 即时编译
key 键 (for database)
key column 键列 (for database)
laser 激光
late binding 迟绑定
left outer join 左向外联接 (for database)
level 阶、层例
high level 高阶、高层
library 库
lifetime 生命期、寿命
link 连接、链接
linkage 连接、链接
linker 连接器、链接器
literal constant 字面常数
list 列表、表、链表
list box 列表框
livelock 活锁 (for database)
load 装载、加载
load balancing 负载平衡
loader 装载器、载入器
local 局部的
local object 局部对象
lock 锁
log 日志
login 登录
login security mode登录安全模式 (for database)
lookup table 查找表 (for database)
loop 循环
loose coupling 松散耦合
lvalue 左值
machine code 机器码、机器代码
macro 宏
maintain 维护
managed code 受控代码、托管代码
Managed Extensions 受控扩充件、托管扩展
managed object 受控对象、托管对象
mangled name
manifest 清单
manipulator 操纵器(iostream预先定义的一种东西)
many-to-many relationship 多对多关系 (for database)
many-to-one relationship 多对一关系 (for database)
marshal 列集
member 成员
member access operator 成员取用运算子(有dot和arrow两种)
member function 成员函数
member initialization list成员初始值列表
memberwise 以member为单元…、members 逐一…
memberwise
memory 内存
memory leak 内存泄漏
menu 菜单
message 消息
message based 基于消息的
message loop 消息环
message queuing消息队列
metadata 元数据
metaprogramming元编程
method 方法
micro 微
middleware 中间件
middle tier 中间层
modeling 建模
modeling language 建模语言
modifier 修饰字、修饰符
modem 调制解调器
mole 模块
most derived class最底层的派生类
mouse 鼠标
mutable 可变的
mutex 互斥元、互斥体
multidimensional OLAP (MOLAP) 多维OLAP(MOLAP) (for database)
multithreaded server application 多线程服务器应用程序
multiuser 多用户
multi-tasking 多任务
multi-thread 多线程
multicast delegate 组播委托、多点委托
named parameter 命名参数
named pipe 命名管道
namespace 名字空间、命名空间
native 原生的、本地的
native code 本地码、本机码
Native Image Generator (NGEN)本地映像生成器
nested class 嵌套类
nested query 嵌套查询 (for database)
nested table 嵌套表 (for database)
network 网络
network card 网卡
nondependent name
object 对象
object based 基于对象的
object file 目标文件
object model 对象模型
object oriented 面向对象的
laser 激光
late binding 迟绑定
left outer join 左向外联接 (for database)
level 阶、层例
high level 高阶、高层
library 库
lifetime 生命期、寿命
link 连接、链接
linkage 连接、链接
linker 连接器、链接器
literal constant 字面常数
list 列表、表、链表
list box 列表框
livelock 活锁 (for database)
load 装载、加载
load balancing 负载平衡
loader 装载器、载入器
local 局部的
local object 局部对象
lock 锁
log 日志
login 登录
login security mode登录安全模式 (for database)
lookup table 查找表 (for database)
loop 循环
loose coupling 松散耦合
lvalue 左值
machine code 机器码、机器代码
macro 宏
maintain 维护
managed code 受控代码、托管代码
Managed Extensions 受控扩充件、托管扩展
managed object 受控对象、托管对象
mangled name
manifest 清单
manipulator 操纵器(iostream预先定义的一种东西)
many-to-many relationship 多对多关系 (for database)
many-to-one relationship 多对一关系 (for database)
marshal 列集
member 成员
member access operator 成员取用运算子(有dot和arrow两种)
member function 成员函数
member initialization list成员初始值列表
memberwise 以member为单元…、members 逐一…
memberwise
memory 内存
memory leak 内存泄漏
menu 菜单
message 消息
message based 基于消息的
message loop 消息环
message queuing消息队列
metadata 元数据
metaprogramming元编程
method 方法
micro 微
middleware 中间件
middle tier 中间层
modeling 建模
modeling language 建模语言
modifier 修饰字、修饰符
modem 调制解调器
mole 模块
most derived class最底层的派生类
mouse 鼠标
mutable 可变的
mutex 互斥元、互斥体
multidimensional OLAP (MOLAP) 多维OLAP(MOLAP) (for database)
multithreaded server application 多线程服务器应用程序
multiuser 多用户
multi-tasking 多任务
multi-thread 多线程
multicast delegate 组播委托、多点委托
named parameter 命名参数
named pipe 命名管道
namespace 名字空间、命名空间
native 原生的、本地的
native code 本地码、本机码
Native Image Generator (NGEN)

阅读全文

与java01背包相关的资料

热点内容
实施组策略需要什么服务器 浏览:489
moocpdf 浏览:389
儿童手工解压盒子怎么做 浏览:486
信令系统pdf 浏览:940
公私钥加密算法公式 浏览:228
was创建server命令 浏览:93
安卓10的平板怎么升级鸿蒙系统 浏览:389
移动网络不能登陆服务器地址 浏览:145
好的java网站 浏览:819
抵押房解压了还能办理银行分期 浏览:560
腰1椎体压缩性骨折的症状 浏览:360
滚动回归命令 浏览:505
linux资源不可用 浏览:81
四眼玩家app怎么找 浏览:655
婚内聊天解压可以吗 浏览:509
35岁可以转行做程序员吗 浏览:860
java取当前时间年月日 浏览:720
不用软糖做解压笔 浏览:497
sub文件夹什么意思 浏览:349
寻路算法演示程序用什么软件 浏览:967