关于#平面#的问题,如何解决?

Dilk4. 大V
时间限制:1.0s 内存限制:256.0MB 代码提交间隔:3分钟(现在可以提交)
问题描述
  当夜深人静时,小明喜欢独自凝望着天空。
  这一天,小明看着满天的繁星,突发奇思妙想,他发现可以通过用直线连接天空中的星星来组成美丽的图案。
  小明想到一个非常简单的图案:大写的V,如果连接三颗星星,中间一颗最靠下方,这样的形状就是一个大V了。
  小明越想越着迷,他想知道,天空中最亮的 n 颗星星,可以有多少种方式组成大V。
  为了更严谨的看待问题,小明把自己所见范围的天空映射到了一个平面直角坐标系中,他看到的最亮的 n 颗星星在这个坐标系中都有自己的坐标。
  如果三颗星星的坐标分别为 (x_i, y_i), (x_j, y_j), (x_k, y_k),当 x_i < x_j < x_k 且 y_j < y_i 且 y_j < y_k 时,这三颗星星就组成了一个大 V。
输入格式
  输入的第一行包含一个整数 n 。
  接下来 n 行,每行两个整数,每一行表示一颗星星的 x 坐标和 y 坐标。
输出格式
  输出一行包含一个整数,表示有多少种方式组成大V。
样例输入
5
4 5
2 3
1 4
3 3
5 8
样例输出
4
评测用例规模与约定
  对于 30% 的评测用例,2 <= n <= 50,星星的坐标为不超过 1000 的非负整数。
  对于 50% 的评测用例,2 <= n <= 100,星星的坐标为不超过 1000 的非负整数。
  对于 80% 的评测用例,2 <= n <= 1000,星星的坐标为不超过 10000 的非负整数。
  对于所有评测用例,2 <= n <= 5000,星星的坐标为不超过 100000 的非负整数。


#include 
using namespace std;
int main() 
{
    int n;
    cin >> n;
    int abc[n][2];
    int sum = 0;
    for (int i=0; i> abc[i][0] >> abc[i][1];
}
    
    for (int i=0; i[i][0][j][0]&&abc[j][0][k][0]) && (abc[j][1][i][1]) && (abc[j][1][k][1])) {
                    sum = sum + 1;
                }
                else if ((abc[k][0][j][0]&&abc[j][0][i][0]) && (abc[j][1][i][1]) && (abc[j][1][k][1])) {
                    sum = sum + 1;
                }
                else if ((abc[k][0][i][0]&&abc[i][0][j][0]) && (abc[i][1][k][1]) && (abc[i][1][j][1])) {
                    sum = sum + 1;
                }
                else if ((abc[j][0][i][0]&&abc[i][0][k][0]) && (abc[i][1][k][1]) && (abc[i][1][j][1])) {
                    sum = sum + 1;
                }
                else if ((abc[i][0][k][0]&&abc[k][0][j][0]) && (abc[k][1][i][1]) && (abc[k][1][j][1])) {
                    sum = sum + 1;
                }
                else if ((abc[j][0][k][0]&&abc[k][0][i][0]) && (abc[k][1][i][1]) && (abc[k][1][j][1])) {
                    sum = sum + 1;
                }
            }
        }
    }
    cout << sum << endl;
    return 0;
}

帮帮我

import java.util.Scanner;

public class test9 {
    public static void main(String[] args) {
        Scanner Input = new Scanner(System.in);
        int n = Input.nextInt();
        int abc[][] = new int[n][2];
        int sum =0;
        for(int i=0;i<n;i++){
            abc[i][0]= Input.nextInt();
            abc[i][1]= Input.nextInt();
        }                                                            //完成输入
        
        for(int i=0;i<abc.length;i++){                                //选取第一个点
            for(int j=i+1;j<abc.length;j++){                            //之后选取第二个点
                for(int k=j+1;k<abc.length;k++){                            //之后选取第三个点
                    //看三个点是否满足当题中( x_i < x_j < x_k 且 y_j < y_i 且 y_j < y_k)
                    //三个点的排列一共有6种情况,直接进行判断,是否符合这6种情况的其中一种
                    if((abc[i][0]<abc[j][0]&&abc[j][0]<abc[k][0])&&(abc[j][1]<abc[i][1])&&(abc[j][1]<abc[k][1]))sum=sum+1;
                    else if((abc[k][0]<abc[j][0]&&abc[j][0]<abc[i][0])&&(abc[j][1]<abc[i][1])&&(abc[j][1]<abc[k][1]))sum=sum+1;
                    else if((abc[k][0]<abc[i][0]&&abc[i][0]<abc[j][0])&&(abc[i][1]<abc[k][1])&&(abc[i][1]<abc[j][1]))sum=sum+1;
                    else if((abc[j][0]<abc[i][0]&&abc[i][0]<abc[k][0])&&(abc[i][1]<abc[k][1])&&(abc[i][1]<abc[j][1]))sum=sum+1;
                    else if((abc[i][0]<abc[k][0]&&abc[k][0]<abc[j][0])&&(abc[k][1]<abc[i][1])&&(abc[k][1]<abc[j][1]))sum=sum+1;
                    else if((abc[j][0]<abc[k][0]&&abc[k][0]<abc[i][0])&&(abc[k][1]<abc[i][1])&&(abc[k][1]<abc[j][1]))sum=sum+1;
                }
            }
        }
        System.out.println(sum);
    }
}

https://blog.csdn.net/qq_44837147/article/details/103326601