2401_84797855 2024-09-24 13:56 采纳率: 45.5%
浏览 8

这个代码只有90分,问题出在哪里了

#include <iostream>
#include <bits×dc++.h>
using namespace std;
int main() {
    long long int n,a,b,i,j,k,m=0;
    cin>>n>>a>>b;

    long long int arr[n][2],arr1[n],brr1[n];
    for(i=0;i<n;i++){
        for(j=0;j<2;j++){
            cin>>arr[i][j];
        }
        arr1[i]=(arr[i][0]-a)*(arr[i][0]-a)+(arr[i][1]-b)*(arr[i][1]-b);
        brr1[i]=arr1[i];
    }

    for(i=0;i<n;i++){
        for(j=i+1;j<n;j++){
            if(arr1[i]<=arr1[j]){
                arr1[i]=arr1[i];
            }
            else{
                k=arr1[i];
                arr1[i]=arr1[j];
                arr1[j]=k;
            }
        }
    }
    for(i=0;i<3;i++){
        for(j=0;j<n;j++){
            if(arr1[i]==brr1[j]){
                if(m!=j+1){
                cout<<j+1<<endl;
                m=j+1;
                break;}
            }
        }
    }
    return 0;
}
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/47fb4271c6904c5b867e6d909493f74e.png "#left")


img

  • 写回答

1条回答 默认 最新

  • Java Fans 全栈领域优质创作者 2024-09-24 14:07
    关注

    这段代码的问题在于排序部分的逻辑有误。在第二个循环中,对数组进行排序时,并没有同时对原始数组的索引进行调整,导致最后输出的结果可能不正确。正确的做法是在排序时同时调整原始数组的索引,以便正确输出最终结果。

    帮你调整了一下代码,你可以使用pair来存储原始数组的值和索引,然后对pair进行排序。这样可以确保排序的同时也能正确地调整原始数组的索引。以下是修改后的代码示例:(答题不易,还望采纳!)

    #include <iostream>
    #include <vector>
    #include <algorithm>
    using namespace std;
    
    bool compare(pair<long long int, int> a, pair<long long int, int> b){
        return a.first < b.first;
    }
    
    int main() {
        long long int n, a, b, i, j, k, m = 0;
        cin >> n >> a >> b;
    
        vector<pair<long long int, int>> arr(n);
        vector<long long int> arr1(n), brr1(n);
    
        for(i = 0; i < n; i++){
            cin >> arr[i].first >> arr[i].second;
            arr1[i] = (arr[i].first - a) * (arr[i].first - a) + (arr[i].second - b) * (arr[i].second - b);
            brr1[i] = arr1[i];
        }
    
        sort(arr.begin(), arr.end(), compare);
    
        for(i = 0; i < 3; i++){
            cout << arr[i].second + 1 << endl;
        }
    
        return 0;
    }
    
    
    
    评论

报告相同问题?

问题事件

  • 修改了问题 9月24日
  • 创建了问题 9月24日

悬赏问题

  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?
  • ¥15 nasm x86 变量归零
  • ¥65 Tree 树形控件实现单选功能,可以使用element也可以手写一个,实现全选为全选状态
  • ¥60 寻抓云闪付tn组成网页付款链接
  • ¥16 寻字节跳动内部人员帮推简历