骑士斗恶龙

骑士斗恶龙

你的王国里有一条n个头的恶龙,你希望雇佣一些骑士把它杀死(砍掉所有的头)。村里有m个骑士可以雇佣,一个战斗为x的骑士可以砍掉恶龙一个直径不超过x的头,且需要支付x个金币。如何雇佣骑士才能砍掉恶龙的所有头,且需要支付的金币最少?注意,一个骑士只能砍一个头(且不能被雇佣两次)。

//骑士斗恶龙 
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
 
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
//恶龙 
typedef struct node{
	string name;
	int DAttack; 
}Dragon;
typedef struct{
	string name;
	int CAttack;
	int Reward;
	string Kill;
}Cavalier;

int main(int argc, char** argv) {
	ifstream fin("Attack.txt");
	Dragon Dtemp;
	Cavalier Ctemp;
	int n, m, i, j, sum = 0;
	fin >> m >> n;
	Dragon * D = new Dragon[n];
	Cavalier * C = new Cavalier[m];
	for (i = 0; i < n; i++){
		fin >> D[i].name >> D[i].DAttack;
	}
	for (i = 0; i < m; i++){
		fin >> C[i].name >> C[i].CAttack;
		C[i].Reward = C[i].CAttack;
	
	}
	fin.close();
	for (i = 0; i < m; i++){
		C[i].Kill = "#";
	}
	for (i = 0; i < n - 1; i++){
		for (j = 0; j < n - i - 1; j++){
			if (D[j].DAttack > D[j + 1].DAttack){
				Dtemp = D[j];
				D[j] = D[j + 1];
				D[j + 1] = Dtemp;
			}
		}
	}
	for (i = 0; i < m - 1; i++){
		for (j = 0; j < m - i - 1; j++){
			if (C[j].CAttack > C[j + 1].CAttack){
				Ctemp = C[j];
				C[j] = C[j + 1];
				C[j + 1] = Ctemp;
			}
		}
	}
	
	for (i = 0, j = 0; i < m && j < n; i++){
		if (D[j].DAttack <= C[i].CAttack){
			C[i].Kill = D[j].name;
			j++;
		}
	}
	
	if (j == n){
		cout << "\n作战情况如下:\n";
		for (i = 0; i < m; i++){
			if(C[i].Kill != "#"){
				
				cout << endl << '\t' << "骑士" << C[i].name << "->" << "恶龙" << C[i].Kill << endl;
				sum += C[i].Reward;
			}
		}
		cout << "\n需要的总金币数为:" << sum << endl;
	}
	else{
		cout << "骑士不能干掉这批龙!\n";
	}
	return 0;
}


以上的数据通过C++的读文件方式获得,文件内容如下:

5 3 Allen 300 Bob 310 Hellen 330
CA 350 CB 290 CC 320 CD 340 CE 330

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一个简单的勇者恶龙游戏的JAVA代码,但需要说明的是,这只是一个简单的示例,如果您想要开发一个完整的游戏,需要更多的时间和精力。 以下是一个简单的勇者恶龙游戏的JAVA代码: ```java import java.util.Random; import java.util.Scanner; public class DragonSlayerGame { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Random random = new Random(); //初始化勇者和恶龙的属性 int heroHP = 100; int dragonHP = 200; System.out.println("勇者恶龙游戏开始!"); while (true) { //勇者攻击 int heroAttack = random.nextInt(20) + 1; System.out.println("勇者发起了攻击,造成了 " + heroAttack + " 点伤害!"); dragonHP -= heroAttack; //判断恶龙是否死亡 if (dragonHP <= 0) { System.out.println("恭喜你,击败了恶龙!"); break; } //恶龙攻击 int dragonAttack = random.nextInt(30) + 1; System.out.println("恶龙发起了攻击,造成了 " + dragonAttack + " 点伤害!"); heroHP -= dragonAttack; //判断勇者是否死亡 if (heroHP <= 0) { System.out.println("很遗憾,勇者被恶龙击败了!"); break; } //打印当前的血量 System.out.println("勇者的血量:" + heroHP); System.out.println("恶龙的血量:" + dragonHP); //等待用户输入 System.out.println("请按回车键继续游戏..."); scanner.nextLine(); } } } ``` 以上代码实现了一个简单的勇者恶龙游戏,每次游戏中,勇者和恶龙都会攻击对方,直到其中一方的血量降为0,游戏结束。 请注意,这只是一个简单的示例,您需要更多的时间和精力来完善和优化这个游戏。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值