30求助
查看原帖
30求助
416242
New_hope楼主2023/7/24 08:18

刚没学几天,还请赐教

#include<bits/stdc++.h>
using namespace std;

struct p{
    int a,b;
};
p pe[1005][1005];

struct l{
    int id;
    float s;
};
l line[1005];
int res[1005*1005][2];

float cal(int x,int y){
    return (x-y)*(x-y)*1.0;
}
int main()
{
    int m,n;
    cin >> m >> n;
    for(int i = 1; i <= n; i ++)
        for(int j = 1; j <= m; j ++)
            cin >> pe[i][j].a;
    for(int i = 1; i <= n; i ++)
        for(int j = 1; j <= m; j ++)
            cin >> pe[i][j].b;
    for(int i = 1; i <= n; i ++){
        float ave_a = 0, ave_b = 0;
        for(int j = 1; j <= m; j ++){
            ave_a += pe[i][j].a;
            ave_b += pe[i][j].b;
        }
        ave_a /= m*1.0, ave_b /= m*1.0;
        
        line[i].id = i;
        for(int j = 1; j <= m; j ++){
            line[i].s += cal(pe[i][j].a, ave_a) + cal(pe[i][j].b, ave_b);
        }
        line[i].s /= m*1.0;
    }
    // for(int i = 1; i <= n; i ++) cout << line[i].s << " ";
    // cout << endl;

    int cnt = 0;
    for(int i = 1; i <= n; i ++){
        for(int j = 1;  j < n-i+1; j ++){
            if(line[j].s >= line[j+1].s){
                cnt ++;
                res[cnt][0] = line[j].id;
                res[cnt][1] = line[j+1].id;
                swap(line[j],line[j+1]);
            }
        }
    }
    // for(int i = 1; i <= n; i ++) cout << line[i].s << " ";
    // cout << endl;
    
    cout << cnt << endl;
    for(int i = 1; i <= cnt; i ++){
        cout << res[i][0] << " " << res[i][1] << endl;
    }
    return 0;
}

2023/7/24 08:18
加载中...