#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们求帮助,壶关