// FinalTest.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include <iostream> typedef struct{ int x; int y; int z; }cube; int cmp(const void* a, const void* b) { return ( * (cube*)a).x - (* (cube*)b).x ; } void ex(cube &cub, int a, int b) { if (a > b) { cub.x = b;cub.y = a; } else{cub.x = a; cub.y = b;} }//将短的边设为x,长的边设为y int main() { int n,gao[100]={0}, m = 0; std::cin >> n; while (n) { int N = n * 3; cube a[300]; for (int i = 0; i < N; i+=3) { std::cin >> a[i].z >> a[i+1].z >> a[i+2].z; ex(a[i], a[i+1].z, a[i+2].z); ex(a[i + 1], a[i].z, a[i+2].z); ex(a[i + 2], a[i].z, a[i+1].z); }//列出立方体的三种状态 qsort(a, N, sizeof(cube), cmp);//按照x从小到大排序 int maxheight=0,maxh[300]={0}, tmax; for (int i = 0; i < N; i++) { maxh[i] = a[i].z; int c = a[i].x; int k = a[i].y; tmax = 0; for (int j = 0; j < i; j++) { if (a[j].x<c && a[j].y<k) { if (maxh[j] > tmax) tmax = maxh[j];//算出可在当前砖上放的最大高度 } } maxh[i] += tmax; if (maxh[i] > maxheight) maxheight = maxh[i]; } gao[++m] = maxheight; std::cin >> n; } for (int i = 1; i <= m; i++) { printf("case%d :maximum height = %d\n", i, gao[i]); } } 将代码转换为伪代码
时间: 2024-04-28 10:19:59 浏览: 123
finaltest.txt
1. 定义结构体 cube,包含三个整型变量 x、y、z。
2. 定义比较函数 cmp,传入两个指向 cube 结构体的指针,比较它们的 x 值的大小。
3. 定义交换函数 ex,传入一个 cube 的引用和两个整型变量 a、b,将较小的值赋给 x,较大的值赋给 y。
4. 主函数 main:
1. 定义整型变量 n 和数组 gao,将 gao 数组的所有元素初始化为 0。
2. 读入 n 的值,当 n 不为 0 时,执行以下操作:
1. 定义整型变量 N 和 cube 类型的数组 a,长度为 n 的三倍。
2. 循环读入 n 个立方体的三个边长,每读入三个边长就将其分别构成三种状态的立方体,并将它们按照较短边为 x,较长边为 y 的方式赋值给数组 a。
3. 对数组 a 按照 x 值从小到大排序。
4. 定义整型变量 maxheight 和 maxh 数组,将 maxh 数组的所有元素初始化为 0。
5. 循环遍历数组 a,对于每个元素,执行以下操作:
1. 将当前元素的 z 值赋值给 maxh 数组对应的元素。
2. 定义整型变量 c 和 k 分别为当前元素的 x 和 y 值。
3. 定义整型变量 tmax,初始化为 0。
4. 循环遍历数组 a 的前 i 个元素,对于每个元素,执行以下操作:
1. 如果当前元素的 x 和 y 值都小于该元素的对应值,说明当前元素可以放在该元素上面,更新 tmax 的值为 maxh 数组对应元素的值和 tmax 中的较大值。
5. 将 tmax 加上当前元素的 z 值,更新 maxh 数组对应元素的值。
6. 如果 maxh 数组对应元素的值大于 maxheight,更新 maxheight 的值。
6. 将 maxheight 的值赋给 gao 数组的第 m 个元素,将 m 的值加 1。
7. 重新读入 n 的值,循环继续执行。
3. 循环遍历数组 gao,输出每个元素对应的最大高度。
阅读全文