ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

1230:寻找平面上的极大点

2020-02-23 11:02:11  阅读:387  来源: 互联网

标签:1230 && 极大 int 纵坐标 110 数组 平面 cout


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

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

          我定义了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 }

 

标签:1230,&&,极大,int,纵坐标,110,数组,平面,cout
来源: https://www.cnblogs.com/zkw666/p/12348756.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有