`
gtssgtss
  • 浏览: 17321 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

升级打怪穿装备,看看你能升几级

 
阅读更多
我鶸鰯才升到lv3

class MyClass {
    private final int base;
    private int current;

    public MyClass(int base,int current){
        this.base = base < 0 ? 0 : base > 15 ? 15 : base;
        this.current = current < 0 ? 0 : current > 30 ? 30 : current;
    }

    public int getValue(){
        return base + current;
    }

    public void changeMyClass(int input){
        current = current/2 + (input < 0 ? 0 : input);
    }
}


LV1、写一个方法 int getBase(MyClass myClass);输出myClass的base值。

LV2、写一个方法 List<Integer> max(MyClass myClass, List<Integer> list);输出一个的list,使结果list能达到如下效果:选择原list中任意个数放入结果list,按照结果list的顺序,进行changeMyClass的操作,可以使最终的getValue得到最大值。

LV3、写一个方法 List<Integer> minSum(int wantedValue, MyClass myClass, List<Integer> list);输出一个的list,使结果list能达到如下效果:选择原list中任意个数放入结果list,按照结果list的顺序,进行changeMyClass的操作,可以使最终的getValue大于等于wantedValue,且结果list中所有数的和最小。若不存在结果,抛出异常。

LV4、写一个方法 List<Integer> minMax(int wantedValue, MyClass myClass, List<Integer> list,int limit);输出一个的list,使结果list能达到如下效果:选择原list中小于等于limit数量的数放入结果list,按照结果list的顺序,进行changeMyClass的操作,可以使最终的getValue大于等于wantedValue,且结果list中最大的数比其他结果list的最大数都小,若相等,比较第二大的数,以此类推。若不存在结果,抛出异常。

LV5、
class MyPairClass{
    MyClass myLeftClass;
    MyClass myRightClass;
    public MyPairClass(int base,int current){
        myLeftClass = new MyClass(base,current);
        myRightClass = new MyClass(base,current);
    }
}

class PairInt{
    int left;
    int right;
    public PairInt(int left, int right){
        this.left = left;
        this.right = right;
    }
}

试写出List<PairInt> minSum(PairInt wantedValue, MyPairClass myPairClass, List<PairInt> list);
和List<PairInt> minMax(PairInt wantedValue, MyPairClass myPairClass, List<PairInt> list,int limit);
分享到:
评论
14 楼 xiaguangme 2011-03-22  
LV1
MyClass myclass = new MyClass(11,12);

myclass.changeMyClass(0);

int v1 = myclass.getValue();

myclass = new MyClass(11,12);

int v2 = myclass.getValue();

int current = 2 * (v2 - v1);

System.out.println("base:" + (v2-current));
13 楼 dsjt 2011-03-22  
seyaa 写道
飛翔の雲 写道
弱弱问下。java代码
private final int base; 
final修饰的变量不初始化为什么不报错呢?

默认值 0




虽然有默认值,但不报错原因不在此;
不报错 是因为构造方法中 初始化了;
12 楼 seyaa 2011-03-22  
飛翔の雲 写道
弱弱问下。java代码
private final int base; 
final修饰的变量不初始化为什么不报错呢?

默认值 0
11 楼 zy19982004 2011-03-22  
zy19982004 写道
太悲剧了
只会了LV1
public int getBase(MyClass myClass) {
    myClass.changeMyClass(0);
return myClass.getValue();
    }

晕哦   回过头来一看    还是个错的  
10 楼 zy19982004 2011-03-22  
太悲剧了
只会了LV1
public int getBase(MyClass myClass) {
    myClass.changeMyClass(0);
return myClass.getValue();
    }
9 楼 飛翔の雲 2011-03-22  
弱弱问下。java代码
private final int base; 
final修饰的变量不初始化为什么不报错呢?
8 楼 dsjt 2011-03-22  
哎哟喂,有意思,拿回去看看!
哎哟喂1 应该是解二元一次方程;


顺便问一句:鶸鰯 是嘛东东?
7 楼 xjlsgcjdtc 2011-03-21  
Lv1:
public int getBase(MyClass m) {
    	
    	int key = 30;
    	while (key > 0) {
    		m.changeMyClass(-1);
    		key /= 2;
    	}
    	return m.getValue();
    }
6 楼 油炸大龙虾 2011-03-21  
xuxin012 写道
直接反射强取 .. 不折腾算法

够暴力
5 楼 feiyan35488 2011-03-21  
xuxin012 写道
直接反射强取 .. 不折腾算法

int getBase(MyClass myClass)
	{
		int result=0;
		try 
		{
			Field field=myClass.getClass().getDeclaredField("base");
			field.setAccessible(true);
			result=field.getInt(myClass);
		}
		catch (Exception e) 
		{
			e.printStackTrace();
		}
		return result;
    }

来强的了
4 楼 xuxin012 2011-03-21  
直接反射强取 .. 不折腾算法

int getBase(MyClass myClass)
	{
		int result=0;
		try 
		{
			Field field=myClass.getClass().getDeclaredField("base");
			field.setAccessible(true);
			result=field.getInt(myClass);
		}
		catch (Exception e) 
		{
			e.printStackTrace();
		}
		return result;
    }
3 楼 gtssgtss 2011-03-20  
45只是构造的时候的最大值,change不受影响的

lv1就是不断用0来change,getValue不变时,getValue得到的就是base;

lv2开始要关注MyClass的特性了,
特性1:change的参数input等于current/2+current%2的时候,change刚好不变:
特性2:input>0时,一直用同一个input来change,current的值最终会一直保持在2*input-1
得出的结论就是input>current/2+current%2的数就可以让current增大,同时保证下次用同样大input进行change的时候,current不会变小

于是先算出base,就得到原始的current。然后把传入的list升序排序,从排序list里截取大于等于current/2+current%2的部分。这样能保证每次change都可以增大current的值

lv3要让结果list的和最小,关键就是要尽快提高current的值,因为每次change,current就有损失值,这里的损失,都是要list里的值来填补的

于是就推导出一个笨的办法,就是用list{最大}尝试change,不成功就用list{第2大,最大}尝试,以此类推,成功以后再尝试减小结果list第一个数,如果能让getValue等于wanted,那必然list的和最小,如果不能相等,可能要穷举list里第1个数与第2个数可能的组合来得到结果
2 楼 tfwin2 2011-03-20  
LV1 没问题,中间利用调用changeMyClass一次,可以得到两个getValue,由此可计算出base
LV2开始理解上有问题了,给出的方法中理论上最大值是45,难道要以这个做判断?不然穷举的话,我没仔细想,实现起来估计会很麻烦。。。。。
从LV2以后都不想看了,哈哈
1 楼 xbcoil 2011-03-20  
.有点难度。lv1。。都悬啊

相关推荐

    高级运维工程师打怪升级之路.txt

    高级运维工程师打怪升级之路 ┣━━1.打怪篇.mp4 ┣━━2.师门任务篇.mp4 ┣━━3.升级篇.mp4 ┣━━4.修仙篇.mp4 ┗━━高级运维工程师打怪升级之路.pdf

    升级打怪小游戏代码

    【升级打怪小游戏代码】是一个基于C++编程语言开发的小型游戏项目,旨在提供一个学习C++编程和游戏开发的基础平台。在这个项目中,玩家控制的角色需要与怪物战斗,通过击败怪物来提升等级和能力,这体现了游戏设计中...

    易语言自动打怪源码看看吧

    看看吧易语言自动打怪

    VC++开发的小游戏 打怪升级

    【VC++开发的小游戏 打怪升级】是一个利用C++编程语言进行开发的项目,它展示了游戏开发的基础和进阶技巧。在这个项目中,开发者利用Visual C++(简称VC++)这一强大的集成开发环境,结合C++语言的特性,构建了一个...

    自己写的一个打怪升级的小游戏

    标题中的“自己写的一个打怪升级的小游戏”表明这是一个个人创作的、基于打怪和升级的游戏项目。在编程领域,这种类型的游戏通常涉及到基础的逻辑控制、角色状态管理以及简单的战斗算法。它可能是用Java语言编写的,...

    python打怪升级文字小游戏

    python打怪升级文字小游戏

    简单回合制打怪升级游戏

    资源为文章所述游戏的代码实现,安装python3即可执行,当然利用pycharm控制台效果更好。

    MJXQ.rar_打怪升级

    《MJXQ.rar_打怪升级》是一款初步尝试3D技术的游戏DEMO,它主要展现了角色扮演游戏(RPG)的核心元素——打怪升级和任务系统。在这个DEMO中,玩家可以控制一个角色在虚拟世界中与各种怪物战斗,通过战胜敌人获得经验值...

    Ezs_攻击_新手村到10级打怪_

    5. 升级装备:打怪和完成任务会掉落装备,及时更换更高级的装备可以提升战斗力。 通过以上步骤,新手玩家可以从新手村顺利过渡到10级,并逐渐掌握游戏的基本战斗技巧。不断学习和实践,你将在《魔剑》的世界中成为...

    基于C++实现模拟凡人修仙传的升级、打怪、市场等功能源码.zip

    5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈! 【资源介绍】 基于C++实现模拟凡人修仙传的升级、打怪、市场等功能源码.zip基于C++实现模拟凡人修仙传的升级、打怪、市场等功能源码.zip基于C++实现模拟...

    打怪游戏打怪游戏打怪游戏

    打怪游戏打怪游戏打怪游戏

    简单回合制打怪升级游戏.py

    资源为文章所述游戏的代码实现,安装python3即可执行,当然利用pycharm控制台效果更好。

    超简单的打怪游戏

    易语言写的模仿打怪游戏,超简单,打了怪物怪物会少血,但如果不一次打死的话,怪物的血会自动恢复

    易语言文字打怪游戏

    《易语言文字打怪游戏》是一款基于易语言开发的文字类角色扮演游戏。易语言是中国本土的一种可视化编程工具,它以其简洁的语法和丰富的功能,降低了编程的门槛,使得初学者也能快速上手。这款游戏的设计旨在通过文字...

    c++ 控制台 打怪小游戏.cpp

    c++ 控制台 打怪小游戏.cpp

    魔兽世界(物品)装备制作工具_wow_TrinityItemCreator_装备制作_

    在游戏里,玩家可以通过多种方式获取装备,如打怪、完成任务或交易。然而,对于那些热衷于创新和个性化设计的玩家来说,有一个名为“TrinityItemCreator”的工具可以让他们自己制作虚拟的魔兽世界装备,这无疑为游戏...

    设计模式程序员升级打怪路上不得不打的拦路虎

    7. **适配器模式**:将一个类的接口转换成客户期望的另一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。 8. **桥接模式**:将抽象部分与它的实现部分分离,使它们都可以独立地变化。它可以降低...

    VC++编写的打怪游戏类库

    【VC++编写的打怪游戏类库】是一个利用C++编程语言开发的游戏开发框架,它为构建基于Windows平台的打怪冒险游戏提供了基础组件和工具。C++是一种强大的、面向对象的编程语言,广泛用于创建高性能的应用程序,尤其是...

    C#初学者制作的一个打怪小游戏【初学者看下】

    通过封装、继承和多态性,你可以构建出层次分明、可扩展的游戏架构。 3. **游戏循环(Game Loop)**:游戏的核心是一个不断重复的循环,用于更新游戏状态、处理输入和渲染画面。常见的游戏循环模型有固定时间步进和...

    打怪.cpp 小游戏.cpp

    打怪.cpp 小游戏.cpp

Global site tag (gtag.js) - Google Analytics