• 1230:寻找平面上的极大点


              这个题我写的十分繁琐,可能没找到正确的思路,不过我也是勉强过了。

              我的思路是挨个判断点的横、纵坐标,如果有点的横、纵坐标都小于某个点,就将横、纵坐标小的那个点排除。再继续判断。

              我定义了a,b两个数组,分别存储点的横、纵坐标。之后将a数组从小到大排序,在套两个循环,将纵坐标在于横坐标对应上:

     1 sort(a+1,a+n+1);
     2     for(int i=1;i<=n;++i)
     3     {
     4         for(int j=1;j<=n;++j)
     5         {
     6             if(a[i]==c[j])
     7             {
     8                 b[i]=d[j];
     9                 c[j]=0;
    10                 break;
    11             }
    12         }
    13     }

    我又定义了c,d两个数组,c数组与a数组相同,d数组与b数组相同。这样就能再将点的横、纵坐标匹配上。

    接下来就要判断点坐标之间的关系:如果有的点的横、纵坐标都小于某个点,那么这个点肯定不是极大点,所以就可以把它的横、纵坐标都定义为0,就可以把它排除。

     1 for(int i=1;i<=n;++i)
     2     {
     3         for(int j=1;j<=n;++j)
     4         {
     5             if(a[i]>=a[j] && b[i]>=b[j])
     6             {
     7                 if(a[i]==a[j] && b[i]==b[j])
     8                 {
     9                     continue;
    10                 }
    11                 else
    12                 {
    13                     a[j]=0;
    14                     b[j]=0;
    15                 }
    16             }
    17         }
    18     }

    在输出前还要判断n即一共给的点的个数,如果n=1,直接输出这个点。

    1 if(n==1)
    2     {
    3         cout<<"("<<a[1]<<","<<b[1]<<")";
    4     }

    还有“,”的问题,可以先循环一下,用一个计数器记录一共有多少个极大点,最后先输出前几个,直到剩下一个点的时候,就再单独输出。

    1 for(int i=1;i<=n;++i)
    2     {
    3         if(a[i]>0 || b[i]>0)
    4         {
    5             s++;
    6         }
    7     }

    s就是计数器,记录极大点个数。

    完整代码:

      1 #include<iostream>
      2 #include<algorithm>
      3 using namespace std;
      4 int main()
      5 {
      6     int m,t=0,s=0,n,a[110],b[110],c[110],d[110];
      7     cin>>n;
      8     for(int i=1;i<=n;++i)
      9     {
     10         cin>>a[i]>>b[i];
     11         c[i]=a[i];
     12         d[i]=b[i];
     13     }
     14     if(n==1)
     15     {
     16         cout<<"("<<a[1]<<","<<b[1]<<")";
     17     }
     18     else
     19     {
     20     sort(a+1,a+n+1);
     21     for(int i=1;i<=n;++i)
     22     {
     23         for(int j=1;j<=n;++j)
     24         {
     25             if(a[i]==c[j])
     26             {
     27                 b[i]=d[j];
     28                 c[j]=0;
     29                 break;
     30             }
     31         }
     32     }
     33     for(int i=1;i<=n;++i)
     34     {
     35         for(int j=1;j<=n;++j)
     36         {
     37             if(a[i]>=a[j] && b[i]>=b[j])
     38             {
     39                 if(a[i]==a[j] && b[i]==b[j])
     40                 {
     41                     continue;
     42                 }
     43                 else
     44                 {
     45                     a[j]=0;
     46                     b[j]=0;
     47                 }
     48             }
     49         }
     50     }
     51     for(int i=1;i<=n;++i)
     52     {
     53         if(a[i]>0 || b[i]>0)
     54         {
     55             s++;
     56         }
     57     }
     58     if(s==1)
     59     {
     60         for(int i=1;i<=n;++i)
     61         {
     62             if(a[i]>0 || b[i]>0)
     63             {
     64                 cout<<"("<<a[i]<<","<<b[i]<<")";
     65                 break;
     66             }
     67         }
     68     }
     69      else
     70      {
     71      for(int j=1;j<=n;++j)
     72      {
     73         if(a[j]==0 && b[j]==0)
     74         {
     75             continue;
     76         }
     77         else
     78         {
     79             cout<<"("<<a[j]<<","<<b[j]<<")"<<",";
     80             t++;
     81         }
     82         if(t==s-1)
     83         {
     84             m=j;
     85             break;
     86         }
     87      }
     88      for(int i=m+1;i<=n;++i)
     89      {
     90         if(a[i]==0 && b[i]==0)
     91         {
     92             continue;
     93         }
     94         else
     95         {
     96             cout<<"("<<a[i]<<","<<b[i]<<")";
     97         }
     98      }
     99      }
    100     }
    101     return 0;
    102 }
  • 相关阅读:
    JavaScript变量的传递方式
    三分钟读懂BGP带宽
    Docker安装及基础知识
    CentOS搭建“加速器”
    SSH 不分配远程主机tty
    2020年智慧电力解决方案
    docker安装2020
    如何让电力巡检机器人项目落地
    清淤机器人项目落地重庆市政工程
    智慧电网_电力巡检机器人解决方案
  • 原文地址:https://www.cnblogs.com/zkw666/p/12348756.html
Copyright © 2020-2023  润新知