光**游戏2**9届校招笔试题-JAVA编写

5 篇文章 0 订阅
2 篇文章 0 订阅

2018/8/16更新----笔试挂了,大家以下文章大家就当看着玩吧。。。。。。。。。。。。

 

 

说实话,光宇的笔试题不难,暑假在家天天玩。。基本的东西都忘记了,明天还有网易游戏的笔试。。。感觉要凉凉了,光宇笔试总共有两道题目,时间为80分钟(题目没有截图,只说下我记住的内容)

第一题:

对于给定数组,求任意两个数的乘积,最后输出最大的成绩,要求比较次数最小

如{1,2,5,8,-10,-100,20,20} 最大的积为1000 = -10*-1000

/*c++解题思路:
*将数组及数组长度传入判断函数,函数内对莫一项及其后面所有项进行乘法运算
*最终得到最大成绩
**/

#include<iostream>
#include<stdio.h>
using namespace std;

void FindMaxPro(int *num,int size);//查找最大积的函数声明

void main(){
	int num[]={1,2,5,8,-10,-100,20,20};//给定的数组
	
	FindMaxPro(num,8);//函数调用
}

//查找最大积的函数
//num 数组  size数组长度
void FindMaxPro(int *num,int size){

	int i,j;
	long max=0;
	for(i=0;i<(size-1);i++){//数组内的某一项与其后各项进行相乘,将较大的数保存最后输出
		for(j=i+1;j<(size-1);j++){
			if(max<num[i]*num[j]){//比较
				max=num[i]*num[j];
			}
		}
	}

	cout<<"最大的积为:"<<max<<endl;//输出结果
		
}

第二题

已知如下怪物信息及怪物数组,击杀怪物获得金币,求获取的最大金币数,击败怪物总时间限制在40分钟,如70=24+23+23

(PS自以为是的考察内容:面向对象中类内数据的获取)

class Monster {
    // 打败花费的时间(分钟)
    int costMinTime;
    // 掉落金币数量
    int coinNum;
    Monster(int costMinTime, int coinNum) {
        this.costMinTime = costMinTime;
        this.coinNum = coinNum;
    }
}

//怪物数组
        Monster[] mosters = new Monster[] {

                new Monster(12, 24),
                new Monster(18, 20),

               new Monster(19, 20),

               new Monster(25, 30),
               new Monster(10, 23),

               new Monster(10, 23) };

//获取最大金币的函数

int wonMaxCoin(Monster [] mosters)

/*java解题思路:
*在wonMaxCoin函数中,按全排列的方式选定三个怪物,每次将打败三个怪物花费
*的时间costMinTime进行相加,当该时间小于40分钟时计算击败这三个怪物所得的金币数量
*计算后保存,便于下次循环与另外的排列方式进行比较,最终获取较大的金币数量
**/
package mrx_test;

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//怪物数组
		Monster[] mosters = new Monster[] { new Monster(12, 24),
				new Monster(18, 20), new Monster(19, 20), new Monster(25, 30),
				new Monster(10, 23), new Monster(10, 23) };
		//输出最大金币
		System.out.println(wonMaxCoin(mosters));
		
	}
	static  int wonMaxCoin(Monster [] mosters){
		int coinSum=0;
		int coinb=0;//金币比较
		int minutes=0;
		int i,j,k;
		for(i=0;i<mosters.length;i++){
			for(j=i+1;j<mosters.length;j++){
				for(k=j+1;k<mosters.length;k++){
					//时间求和
					minutes+=(mosters[i].getCostMinTime()+mosters[j].getCostMinTime()+mosters[k].getCostMinTime());
					//System.out.println(minutes);
					if(minutes<=40){
						coinb+=(mosters[i].getCoinNum()+mosters[j].getCoinNum()+mosters[k].getCoinNum());
					}
					//金币比较
					if(coinb>coinSum) {coinSum = coinb;}
					//金币,时间重置用于下次循环计算
					minutes=0;
					coinb=0;
				}
			}
			
		}
		
			
		return coinSum;
		
	}
}

class Monster {
	// 打败花费的时间(分钟)
	int costMinTime;
	// 掉落金币数量
	int coinNum;
	Monster(int costMinTime, int coinNum) {
		this.costMinTime = costMinTime;
		this.coinNum = coinNum;
	}
	//获取击败时间
	public int getCostMinTime(){ return this.costMinTime;}
	//获取获得金币
	public int getCoinNum(){return this.coinNum;}
}

以上就是我的作答。。。第二题发现c++有点忘记了所以用java写的。。。发现自己编程真的好渣,希望大神指点。。。。几乎到了最后才交卷。。。。大四狗回学校不知道能不能找到工作。。。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值