xdm求助!!!
  • 板块灌水区
  • 楼主LSR120218_juruo
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/7/31 09:29
  • 上次更新2024/7/31 11:03:59
查看原帖
xdm求助!!!
971101
LSR120218_juruo楼主2024/7/31 09:29
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
#include<cstdio>
#include <cstdlib>
#include <ctime>
using namespace std;
int s[10][10];
int tj = 0;
void pd(int &x, int &y, int D_coordinate, int rows, int cols) {
	bool unique;
	do {
		unique = true;
		x = rand() % rows;
		y = rand() % cols;
		for (int i = 0; i < D_coordinate; ++i) {
			if (s[i][0] == x && s[i][1] == y) {
				unique = false;
				break;
			}
		}
	} while (!unique);
	s[D_coordinate][0] = x;
	s[D_coordinate][1] = y;
}

//void pd(int x, int y, int D_coordinate, int rows, int cols) {
//
////	for (int i = 0; i < D_coordinate; i++) {
////		if (s[i][0] == x && s[i][1] == y) {
////			tj = 1;
////			break;
////		}
////	}
////	if (tj == 1) {
////		x = rand() % rows;
////		y = rand() % cols;
////		pd(x, y, D_coordinate, rows, cols);
////	} else {
////		s[D_coordinate][0] = x;
////		s[D_coordinate][1] = y;
////	}
//}
//void pd(int &x, int &y, int D_coordinate, int rows, int cols) {
//	bool unique = false;
//	while (!unique) {
//		unique = true;
//		x = rand() % rows;
//		y = rand() % cols;
//		for (int i = 0; i < D_coordinate; ++i) {
//			if ((s[i][0] == x && s[i][1] == y)) {
//				unique = false;
//				break;
//			}
//		}
//	}
//	s[D_coordinate][0] = x;
//	s[D_coordinate][1] = y;
//}

//void pd(int x, int y, int D_coordinate, int rows, int cols) {
//	for (int i = 0; i < D_coordinate; i++) {
//		if (s[i][0] == x && s[i][1] == y) {
//			tj = 1;
//			break;
//		}
//	}
//	if (tj == 1) {
//		x = rand() % rows;
//		y = rand() % cols;
//		pd(x, y, D_coordinate, rows, cols);
//	} else {
//		s[D_coordinate][0] = x;
//		s[D_coordinate][1] = y;
//	}
//}
int main() {
	int num = 0, ans = 0, D_coordinate = 0;
	double gailv = 0;
	cout << "你是一个边境小镇的镇长," << endl;
	cout << "每天都会有暴乱,和受伤的" << endl;
	cout << "民众,你需要派无人机解救" << endl;
	cout << "他们!" << endl;
	cout << "当前情况:" << endl;
	srand((unsigned int)time(NULL)); // 设置随机种子
	int t = rand() % 9 + 1;
	for (int i = 0; i < t; i++) {
		cout << "正常." << endl;
		sleep(1); // 每次输出后延时1秒
	}
	cout << "发现受伤民众,无人机起飞!" << endl;
	sleep(2);
	int rows = rand() % 10 + 1; // 1到10的随机行数
	int cols = rand() % 10 + 1; // 1到10的随机列数
	// 初始化病人的生命倒计时数组
	int grid[rows][cols];
	int a[rows][cols];
	for (int i = 0; i < rows; i++) {
		for (int j = 0; j < cols; j++) {
			grid[i][j] = rand() % 11; // 生命值随机,包括0
			a[i][j] = grid[i][j];
		}
	}
	for (int i = 0; i < rows; i++) {
		for (int j = 0; j < cols; j++) {
			if (a[i][j] == 0) {
				a[i][j] = -1;
			}
		}
	}
	// 无人机起始位置
	int x = rand() % rows;
	int y = rand() % cols;
	s[0][0] = x;
	s[0][1] = y;
	D_coordinate = 1;
	for (int i = 1; i <= rows * cols; i++) {
		cout << "无人机起始位置:" << x << " " << y << endl;
		cout << "初始病人范围:" << endl;
		for (int i = 0; i < rows; i++) {
			for (int j = 0; j < cols; j++) {
				cout << grid[i][j] << " ";
			}
			cout << endl;
		}
		// 无人机飞行过程中检查任务是否失败
		bool missionFailed = false;
		// 移动无人机遍历数组
		for (int step = 0; step < rows * cols && !missionFailed; step++) {
			// 每次移动,所有受伤民众的生命值减1
			for (int i = 0; i < rows; i++) {
				for (int j = 0; j < cols; j++) {
					if (grid[i][j] > 0) {
						grid[i][j]--;
						if (grid[i][j] == 0) {
							missionFailed = true;
						}
					}
				}
			}
			// 如果无人机当前位置有民众,则救助
			if (grid[x][y] > 0) {
				grid[x][y] = -1;
			}
			// 移动无人机到下一个位置
			y++;
			if (y >= cols) {
				y = 0;
				x++;
				if (x >= rows) {
					x = 0; // 如果到达数组末尾,回到起始位置
				}
			}
		}
		cout << "无人机飞行后的最终数组状态:" << endl;
		for (int i = 0; i < rows; i++) {
			for (int j = 0; j < cols; j++) {
				cout << grid[i][j] << " ";
			}
			cout << endl;
		}
		if (missionFailed) {
			cout << "任务失败:有病人在无人机到达之前已经生命倒计时为零。" << endl;
			ans++;
		} else {
			cout << "任务成功:所有病人已得到及时救助。" << endl;
			num++;
			ans++;
		}
		x = rand() % rows;
		y = rand() % cols;
		s[D_coordinate][0] = x;
		s[D_coordinate][1] = y;
		pd(x, y, D_coordinate, rows, cols);
		s[D_coordinate][0] = x; // 保存新的唯一坐标
		s[D_coordinate][1] = y;
		D_coordinate++;
		if (D_coordinate >= 10 * 10) {
			break;
		}
		for (int i = 0; i < rows; i++) {
			for (int j = 0; j < cols; j++) {
				grid[i][j] = a[i][j];
			}
		}
		sleep(1);
	}
	gailv = num / ans;
	cout << "任务成功概率:" << endl;
	printf("%.2f", gailv * 100);
	cout << "%" << endl;
	return 0;
}

为什么程序进行不到最后的输出?

dalao们求帮助,壶关

2024/7/31 09:29
加载中...