将Algo转换为C++

Convert Algo to C++

本文关键字:C++ 转换 Algo      更新时间:2023-10-16
MAXIMA(int n, Point P[1 . . . n])
1 for i <-- 1 to n 
2 do maximal <-- true
3 for j <-- 1 to n 
4 do
5 if (i != j)&(P[i].x <= P[j].x)&(P[i].y <= P[j].y) 
6 then maximal <-- false break
7 if maximal
8 then output P[i].x, P[i].y

这就是算法:基本上他们给了我{12, 12},{14, 10},{15, 7},{7, 7},{11, 5},{13, 3},{5, 1},{7, 13},{4,11},{9,10},{2,5},{4,4}分输出将与行、COL或X、Y相关,因此X和Y的最大值;Y将是结果,或者可以说在x或Y的平均值中不受其他人支配的点,所以我的代码是:

#include<iostream>
#include<conio.h>
using namespace std;
struct Point{
int x;
int y;
};
int main()
{
Point P[12][2] = {  {12, 12},{14, 10},{15, 7},{7, 7},{11, 5},{13, 3}{5,1},{7, 13},{4,11},{9,10},{2,5},{4,4}    };

bool maxim=true;
for(int i = 0; i < 12; i++)
for(int j = 0; j < 2; j++) 
do {
if(i != j && P[i].x <= P[j].x && P[i].y <= P[j].y)  {
cout << array[i][j] <<"t" ;
cout<<"n";
maxim=false;
}
} while(maxim=true);
break;
}
}
_getch();
return 0;
}

我的输出与它应该是不一样输出应该是:

(7 13) (12 12) (14 10) (15 7)

正如你在第一点看到的,没有人主宰13

第二(12,12(

第三(14,10(

第4(15,7(

这两段代码的主要区别在于,第一段有点类,第二段没有。

你可以自己写一个。

struct Point {
int x;
int y;   
}

(是的,这是一个结构,不是一个类,但让我们尽可能简单(

然后你可以使用数组来存储点,就像你以前做的那样:

Point array[] = { {12, 12},{14, 10},{15, 7},{7, 7},{11, 5},{13, 3},{5, 1},{7, 13},{4,11},{9,10},{2,5},{4,4} };

然后你可以使用与原来几乎相同的循环:

for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++) 
{
if(i != j && P[i].x <= P[j].x && P[i].y <= P[j].y) 
{
...
}
}
}

你必须自己制定细节,但我希望它能为你指明正确的方向。