博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前端面试题
阅读量:6675 次
发布时间:2019-06-25

本文共 4718 字,大约阅读时间需要 15 分钟。

下图是一个装备系统的合成图谱,箭头指向的是合成之后的装备,每合成一个装备需要消耗一些金币(标注在矩形框里面),箭头上的数字表示合成所需的材料数量。比如,要合成n个装备A,需要消耗3n个装备B、1n个装备C、4n个装备D,而且还需要消耗26n金币(装备B和装备D的合成与此类似)。

为了简单起见,下面两个题目的装备图谱都是一棵多叉树,而且玩家最初只拥有指定数量的叶子节点的装备,也就是图中的装备C、装备E、装备F和装备G。
注意,下面的图谱只是一个例子,作答的时候不要局限于这个图谱。

在这里插入图片描述

请从下面的题目中选择一个来作答:

  1. (简单难度)已知玩家拥有一些初级装备(叶子节点的装备)并且所有装备的合成所需消耗的金币都为0,玩家需要合成尽可能多的某个装备(记为装备X),请用C#语言计算出玩家最多可以合成出多少个装备X。
  2. (中等难度)已知玩家拥有一些初级装备(叶子节点的装备)和n个金币,并且所有装备的合成都需要消耗金币,玩家需要合成尽可能多的某个装备(记为装备X),请用C#语言计算出玩家最多可以合成出多少个装备X。

请在收到题目的一至两天内完成,提交的时候只需要提交源代码,并且在代码里面注明选择的是哪个题目。为了规范输入输出,下面给出代码的基本结构,作答的时候不要修改Run函数的函数原型。

using System;using System.Collections.Generic;using System.Diagnostics;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Compose{
public class Exam {
public class MaterialData {
public ItemData item; //合成所需的物品 public int count; //合成所需的该物品的数量 } public class ItemData {
public int id; //物品 ID public int count; //当前拥有的物品数量 public int costGold; //合成该物品所需的金币 public List
materialList; //合成该物品所需的材料 } ///
/// 计算用 totalGold 金币最多可以合成的 item 装备的数量 /// ///
要合成的装备 ///
拥有的金币 ///
可合成的 item 装备的最大数量
public int Run(ItemData item, int totalGold) {
int count = item.materialList.Count; if (count==0) {
return item.count; } int curCount = Run(item.materialList[0].item, 0); int conCount = curCount / item.materialList[0].count; int gold=item.materialList[0].item.costGold; if (gold< totalGold) {
return 0; } int countGold=gold / totalGold; int minCount = countGold < conCount? countGold:conCount; for (int i = 1; i < count; i++) {
curCount = Run(item.materialList[i].item, 0); conCount = curCount / item.materialList[i].count; if (conCount < minCount) {
minCount = conCount; } } return minCount; } public ItemData itemDataA {
get; private set; } public MaterialData materB {
get; private set; } public MaterialData materC {
get; private set; } public MaterialData materD {
get; private set; } public MaterialData materE {
get; private set; } public MaterialData materF {
get; private set; } public MaterialData materG {
get; private set; } public MaterialData CreatData(int materialCount , int itemCount, int id, int costGold,params MaterialData[] materialDatas) {
MaterialData material = new Exam.MaterialData(); material.count = materialCount; ItemData item = new Exam.ItemData(); item.id = id; item.count = itemCount; item.costGold = costGold; item.materialList = new List
(); if (materialDatas!=null&&materialDatas.Length>0) {
for (int i = 0; i < materialDatas.Length; i++) {
item.materialList.Add(materialDatas[i]); } } material.item = item; return material; } public Exam() {
this.materG = CreatData(9, 81, 7, 500, null); this.materF = CreatData(5, 150, 6, 500, null); this.materE = CreatData(1, 150, 5, 500, null); this.materD = CreatData(4, 0, 4, 58, materG); this.materC = CreatData(1, 50, 3, 500, null); this.materB = CreatData(3, 0, 2, 53, materE, materF); this.itemDataA = new ItemData(); this.itemDataA.id = 1; this.itemDataA.count = 0; this.itemDataA.costGold = 26; this.itemDataA.materialList = new List
(); this.itemDataA.materialList.Add(this.materB); this.itemDataA.materialList.Add(this.materC); this.itemDataA.materialList.Add(this.materD); } }}
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Compose{
/// /// 中等难度 /// class Program {
static void Main(string[] args) {
Exam exam=new Exam(); int count=exam.Run(exam.materD.item, exam.materD.item.costGold); Console.WriteLine("可以合成出"+count+ "个装备"); Console.ReadKey(); } }}

转载地址:http://pfrxo.baihongyu.com/

你可能感兴趣的文章
将php数组转js数组,js如何接收PHP数组,json的用法
查看>>
代码的坏味道
查看>>
node概览和安装
查看>>
HDU 2017 多校联合Contest 4
查看>>
.部署MYSQL集群 --测试
查看>>
windows下mysql 控制台操作
查看>>
程序员怎么把自己的招牌打出去?
查看>>
G.Longest Palindrome Substring
查看>>
gdb个人使用记录
查看>>
c++ set和pair 的结合使用
查看>>
C#中哈希表(HashTable)的用法详解
查看>>
一起学Android之ListView
查看>>
nginx 配置geoip 屏蔽地区城市,实现判断国家IP跳转
查看>>
换行显示print_r($arr);打印结果显示:Array( [0] => 百度 [1] => 阿里)
查看>>
第二个Sprint冲刺第 七天(燃尽图)
查看>>
ruby 升级1.8.7到1.9.3
查看>>
linux网络配置命令(一)——ifconfig
查看>>
xcode10设置自定义代码快 - Xcode10新功能新内容
查看>>
【BZOJ】4559: [JLoi2016]成绩比较 计数DP+排列组合+拉格朗日插值
查看>>
【vijos】P1448 校门外的树
查看>>