将Algo转换为C ++

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,{11,5},{13,3},{5,1},13},{4,11},{9,{2,4}分 输出将与Row,COL或X,Y有关,因此将得到X&Y的最大值,或者可以说x或y均不由其他人支配的那个点,所以我的代码是:

    #include<iostream>
    #include<conio.h>
    using namespace std;

    struct Point{
    int x;
    int y;

};

int main()
    {
      Point P[12][2] = {  {12,3}{5,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)

第四(15,7)

zhangziqun31 回答:将Algo转换为C ++

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

您可以自己写一个。

struct Point {
    int x;
    int y;   
}

(是的,这是一个结构,而不是一个类,但让它尽可能简单)

然后,您可以像以前一样使用数组存储点:

Point array[] = { {12,12},{14,10},{15,7},{7,{11,5},{13,3},{5,1},13},{4,11},{9,{2,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) 
        {
        ...
        }
    }
}

您必须自己制定详细信息,但我希望它可以为您指明正确的方向。

本文链接:https://www.f2er.com/3103264.html

大家都在问