问题标题: 酷町堂:3685 力量对比(power)

1
0
已解决
周琪岳
周琪岳
资深光能
资深光能

合肥35届信息学竞赛 3685   力量对比(power)

https://ke.codingtang.com/#/problem/problemSub?id=3685

#include <iostream>
#include <cstdio>
#include <string>
#include <cmath>
#include <algorithm>
using namespace std;
int cnt,a[1010];
int main(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            if(a[j]==a[i]) continue;
            bool flag=0;
            for(int k=1;k<=n;k++){
                if(a[k]==a[j]||a[k]==a[i]) continue;
                if(a[i]==a[j]+a[k]){
                    cnt++;
                    flag=1;
                    break;
                }
            }
            if(flag=1) break;
        }
    }
    cout<<cnt;
    return 0;
}

以上代码得10分

请会的同学们帮忙改正 不要代码

本人仅学到结构体排序 不要用此之外的方法

若能解决 万分感激(附30酷町币)


0
已采纳
余彦文
余彦文
初级光能
初级光能

可以把j=1改成j=i+1,这样就抛掉了一个判断

先暴力2重循环,枚举两个不同的人

再拿一个数存两个人的和,再循环看看这些人里有没有和这个数是一样的

如果有,cnt++,否则continue

剩下的重复问题自己想

0
0
0
董宇昊
董宇昊
初级启示者
初级启示者

你应该再定义一个数组b[2005]

核心代码:

  • for(int i=1;i<=n-1;i++){
  • for(int j=i+1;j<=n;j++){
  • b[a[i]+a[j]]++;
  • }
  • }

 

0
我要回答