chenwhccc 发表于 2021-11-21 14:27:32

jhq999 发表于 2021-11-21 13:09
看看这个思路怎么样
末位淘汰制,直到大家整除的数量一样,且数量=剩下的-1

😰😰😰😰

jhq999 发表于 2021-11-21 16:04:18

本帖最后由 jhq999 于 2021-11-21 16:18 编辑

又想错了

chenwhccc 发表于 2021-11-21 16:21:27

jhq999 发表于 2021-11-21 16:04
又想错了

我出答案了 但是需要优化一下 这个怎么发图片啊?我发给你看看

jhq999 发表于 2021-11-21 17:16:04

本帖最后由 jhq999 于 2021-11-21 17:21 编辑

chenwhccc 发表于 2021-11-21 16:21
我出答案了 但是需要优化一下 这个怎么发图片啊?我发给你看看
发代码啊!
给我一个实例,自己想实例验证太麻烦了,不知道做的对不对

chenwhccc 发表于 2021-11-21 17:26:10

jhq999 发表于 2021-11-21 17:16
发代码啊!
给我一个实例,自己想实例验证太麻烦了,不知道做的对不对

能加一下QQ吗 这个网站我不知道怎么发

jhq999 发表于 2021-11-21 17:39:24

本帖最后由 jhq999 于 2021-11-21 17:40 编辑

chenwhccc 发表于 2021-11-21 17:26
能加一下QQ吗 这个网站我不知道怎么发

你是用手机还是PC,pc直接按
红圈里的<>,把代码复制到出现的对话框里
输出实例和答案也如此操作

chenwhccc 发表于 2021-11-21 17:39:29

jhq999 发表于 2021-11-21 17:16
发代码啊!
给我一个实例,自己想实例验证太麻烦了,不知道做的对不对

#include <stdio.h>
int main()
{
        int n,k,i,j,a=0;
        long A,b;
        int a1=0,a2=0,a3=0;
        scanf("%d %d",&n,&k);
        for(i=0;i<n;i++)
        {
                scanf("%d",&A);
      b=A%k;
      if(b==0)
      {
              a1++;
                }
          if(b==k*(1/2))
                {
                        a2++;
                }
                if(a3=0)
                for(j=i-1;j<n;j--)
                if(b+b==k)
                {
                        a3=1;
                }
        }
   
        if(a1>a2)
          a=a1;
        else
          a=a2;
        if(a>=2)
          printf("%d",a);
        else
           if(a3==1)
              printf("2");
           else
              printf("-1");

        return 0;
       
}

chenwhccc 发表于 2021-11-21 17:40:03

jhq999 发表于 2021-11-21 17:16
发代码啊!
给我一个实例,自己想实例验证太麻烦了,不知道做的对不对

这个答案能运行出来但是 时长很长 需要优化

jhq999 发表于 2021-11-21 17:42:52

本帖最后由 jhq999 于 2021-11-21 17:44 编辑

#include <stdio.h>
int main()
{
      int n,k,i,j,a=0;
      long A,b;
      int a1=0,a2=0,a3=0;
      scanf("%d %d",&n,&k);
      for(i=0;i<n;i++)
      {
                scanf("%d",&A);
      b=A%k;
      if(b==0)
      {
                a1++;
                }
            if(b==k*(1/2))
                {
                        a2++;
                }
                if(a3=0)
                for(j=i-1;j<n;j--)
                if(b+b==k)
                {
                        a3=1;
                }
      }
   
      if(a1>a2)
          a=a1;
      else
          a=a2;
      if(a>=2)
          printf("%d",a);
      else
         if(a3==1)
            printf("2");
         else
            printf("-1");

      return 0;
      
}

chenwhccc 发表于 2021-11-21 17:47:04

jhq999 发表于 2021-11-21 17:42


这个是优化之后的吗?

jhq999 发表于 2021-11-21 17:50:14

chenwhccc 发表于 2021-11-21 17:47
这个是优化之后的吗?

这是你的,我给你改改,你看对不对,发个例子过来

chenwhccc 发表于 2021-11-21 17:54:20

输入5 3
1 2 3 3 6
输出3

chenwhccc 发表于 2021-11-21 18:03:42

#include <stdio.h>
int main()
{
      int n,k,i,j,a=0;
      long A,b;
      int a1=0,a2=0,a3=0;
      scanf("%d %d",&n,&k);
      for(i=0;i<n;i++)
      {
                scanf("%d",&A);
      b=A%k;
      if(b==0)
      {
                a1++;
                }
            if(b==k/2)
                {
                        a2++;
                }
                if(a3==1)
                continue;
                for(j=i+1;j<n;j++)
                if(b+b==k)
                {
                        a3=1;
                }
      }
   
      if(a1>a2)
          a=a1;
      else
          a=a2;
      if(a>=2)
          printf("%d",a);
      else
         if(a3==1)
            printf("2");
         else
            printf("-1");

      return 0;
      
}
一直无法优化

jhq999 发表于 2021-11-21 18:28:38

chenwhccc 发表于 2021-11-21 18:03


8 7
1 3 5 7 9 11 13 15
这个结果是-1出错

chenwhccc 发表于 2021-11-21 18:34:26

jhq999 发表于 2021-11-21 18:28
8 7
1 3 5 7 9 11 13 15
这个结果是-1出错

#include <stdio.h>
int main()
{
      int n,k,i,j,a=0;
      long A,b;
      int a1=0,a2=0,a3=0;
      scanf("%d %d",&n,&k);
      for(i=0;i<n;i++)
      {
                scanf("%d",&A);
      b=A%k;
      if(b==0)
      {
                a1++;
                }
            if(k%2==0)
                        if(b==k/2)
                {
                        a2++;
                }
                if(a3==1)
                continue;
                for(j=i-1;j>=0;j--)
                if(b+b==k)
                {
                        a3=1;
                }
      }
   
      if(a1>a2)
          a=a1;
      else
          a=a2;
      if(a>=2)
          printf("%d",a);
      else
         if(a3==1)
            printf("2");
         else
            printf("-1");

      return 0;
      
}

chenwhccc 发表于 2021-11-21 18:34:58

chenwhccc 发表于 2021-11-21 17:54
输入5 3
1 2 3 3 6
输出3

这是对的你能看看帮我改改吗或者其他方法

jhq999 发表于 2021-11-21 18:51:03

本帖最后由 jhq999 于 2021-11-21 19:15 编辑

chenwhccc 发表于 2021-11-21 18:34


7 11
1 3 5 7 9 11 13 15
2

可以了
页: 1 [2]
查看完整版本: 求助求助 k型好数列