oj题目,为什么ac不过

揽星辰. 2021-02-12 06:34:04



下面是代码:
#include <stdio.h>
int main()
{
int a[1000],b[1000],c[2000],i,j,k,m,n;
void f(int *s,int n);
scanf("%d",&n);
for(i=0;i<n;i++) scanf("%d",&a[i]);
scanf("%d",&m);
for(i=0;i<m;i++) scanf("%d",&b[i]);
for(i=0,k=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(a[i]==b[j])
{
c[k++]=a[i];
break;
}
}
}
if(k>0) f(c,k);
for(i=0;i<n;i++) c[i]=a[i];
for(j=0,k=i;j<m;j++)
{
for(i=0;i<n;i++)
{
if(a[i]==b[j]) break;
}
if(i>=n) c[k++]=b[j];
}
if(k>0) f(c,k);
for(i=0,k=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(a[i]==b[j]) break;
}
if(j>=m) c[k++]=a[i];
}
if(k>0) f(c,k);
return 0;
}
void f(int *s,int x)
{
int temp,i,j;
for(i=0;i<x-1;i++)
{
for(j=0;j<x-i-1;j++)
{
if(s[j]>s[j+1])
{
temp=s[j];
s[j]=s[j+1];
s[j+1]=temp;
}
}
}
for(i=0;i<x-1;i++) printf("%d ",s[i]);
printf("%d\n",s[i]);
}
...全文
201 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
源代码大师 2021-05-06
  • 打赏
  • 举报
回复
希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助:https://blog.csdn.net/it_xiangqiang/category_10768339.html
qzjhjxj 2021-02-14
  • 打赏
  • 举报
回复
供参考:
#include<stdio.h>
#define MAX 1000//最大输入个数

int bubbleSort(int *A,int len)//排序
{
   int i,j,t;
   for(i = 0;i < len-1;i++)
   {
      for(j = 0;j < len-i-1;j++)
      {
         if(A[j] > A[j+1])
         {
            t = A[j+1];
            A[j+1] = A[j];
            A[j] = t;
         }
      }
   }
}

int bingji(int *A,int *B,int lenA,int lenB)//并集
{
   int i,j;
   int flag,index = lenB;
   int *buffer = (int *)malloc(sizeof(int) * (lenA+lenB));
   for(i = 0;i< lenA+lenB;i++)//初始化buffer空间。
   {
      buffer[i] = -1;
   }
   for(i = 0;i < lenB;i++)
   {
      buffer[i] = B[i];
   }
   for(i = 0;i < lenA;i++)
   {
      flag = 1;
      for(j = 0;j < lenB;j++)
      {
         if(A[i] == B[j])
         {
            flag = 0;
         }
      }
      if(flag)
      {
         buffer[index] = A[i];
         index++;
      }
   }
   bubbleSort(buffer,lenA+lenB);//排序
   for(i = 0;i < lenA+lenB;i++)
   {
      if(buffer[i] != -1)
      printf("%d ",buffer[i]);
   }
   printf("\n");
   free(buffer);
}

int jiaoji(int *A,int *B,int lenA,int lenB)//交集
{
   int i,j;
   int flag,index = 0,len = lenA > lenB ? lenA:lenB;
   int *buffer = (int *)malloc(sizeof(int) * len);
   for(i = 0;i < lenA;i++)
   {
      flag = 0;
      for(j = 0;j < lenB;j++)
      {
         if(A[i] == B[j])
            flag = 1;
      }
      for(j = 0;j < index;j++)
      {
         if(A[i] == buffer[j])
            flag = 0;
      }
      if(flag)
      {
         buffer[index] = A[i];
         index++;
      }
   }
   bubbleSort(buffer,index);//排序
   for(i = 0;i< index;i++)
      printf("%d ",buffer[i]);
   printf("\n");
   free(buffer);
}

int yuji(int *A,int *B,int lenA,int lenB)//余集
{
   int i,j;
   int flag,index = 0;
   int *buffer = (int *)malloc(sizeof(int) * lenA);
   for(i = 0;i < lenA;i++)
   {
      flag = 1;
      for(j = 0;j < lenB;j++)
      {
         if(A[i] == B[j])
            flag = 0;
      }
      if(flag)
      {
         buffer[index] = A[i];
         index++;
      }
   }
   bubbleSort(buffer,index);//排序
   for(i = 0;i < index;i++)
      printf("%d ",buffer[i]);
   printf("\n");
   free(buffer);
}

int main()
{
   int a[MAX],b[MAX];//集合
   int i = 0,m = 0,n = 0;
   scanf("%d",&n);
   for(i = 0;i < n;i++)
      scanf("%d",&a[i]);

   scanf("%d",&m);
   for(i = 0;i < m;i++)
      scanf("%d",&b[i]);
   printf("\n");

   jiaoji(a,b,n,m);//交集
   bingji(a,b,n,m);//并集
   yuji(a,b,n,m);//余集
   
   return 0;
}
forever74 2021-02-12
  • 打赏
  • 举报
回复
我是说题目本身自相矛盾,你怎么写代码有可能是白费力气。
揽星辰. 2021-02-12
  • 打赏
  • 举报
回复
引用 1 楼 forever74 的回复:
样例输出与题目要求不符,pass

输出一致啊,不信你自己运行一下看看
forever74 2021-02-12
  • 打赏
  • 举报
回复
样例输出与题目要求不符,pass

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧