鱼C论坛

 找回密码
 立即注册
查看: 1097|回复: 9

寻找两段功能相同代码的差异

[复制链接]
发表于 2021-8-2 16:50:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
有人可以帮忙看一下这两段代码有什么差异吗
在一个OJ平台上1号代码不能通过调试


1号      #include<stdio.h>
struct queue
{
        int data[101];
        int head,tail;
};
int main()
{
        struct queue q;
        int i,n;
        scanf("%d",&n);
        q.head=1;q.tail=1;
        for(i=1;i<=n;i++){
           scanf("%d",&q.data[q.tail]);
                q.tail++;}
        
        while(q.head<q.tail){
                printf("%-d ",q.data[q.head]);
                q.head++;
                q.data[q.tail]=q.data[q.head];
                q.tail++;
                q.head++;}
        return 0;
}


2号      #include<stdio.h>

//定义队列结构体

struct Queue{

  int data[200000];

        int head;

        int tail;

};

int main()

{

        int n,i;

        //初始化队列

        struct Queue q;

        q.head=1;

        q.tail=1;

        scanf("%d",&n);//读入n

        for(i=1;i<=n;i++){//接收数据

                scanf("%d",&q.data[q.tail]);

                q.tail++;

        }

        //进行解密

        while(q.head<q.tail){

          //输出队首元素

                printf("%d ",q.data[q.head]);

                q.head++;//队首出队

                //将下一个数移到队尾

                q.data[q.tail]=q.data[q.head];

                q.tail++;//队尾指针向后移动

                //再将队首出队

                q.head++;

        }

        return 0;

}
        
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-2 18:59:59 | 显示全部楼层
一号我这里能够运行
不知道我输入的方式对不对,两个得到的结果是一样的,我就发一张图了

                               
登录/注册后可看大图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-2 19:26:24 | 显示全部楼层
  1. #include<stdio.h>
  2. struct queue
  3. {
  4.         int data[101];
  5.         int head,tail;
  6. };
  7. int main()
  8. {
  9.         struct queue q;
  10.         int i,n;
  11.         scanf("%d",&n);
  12.         q.head=1;q.tail=1;
  13.         //假设接受的数据为1 2 3 4
  14.                 //即当前head=1,tail=4
  15.         for(i=1;i<=n;i++){
  16.            scanf("%d",&q.data[q.tail]);
  17.                 q.tail++;}
  18.         
  19.         while(q.head<q.tail){
  20.                 printf("%d ",q.data[q.head]); //第一次输出 1 ||  第二次输出 3 ||  第三次输出 2 第三次输出 4
  21.                 q.head++; //head=2 || head =4 || head=6  || 8
  22.                 q.data[q.tail]=q.data[q.head]; //q.data[5] = 2 || q.data[6] = 4 || q.data[7] = 2 || null
  23.                 q.tail++; // tail = 6 || tail = 7 ||  tail = 8  || 9
  24.                 q.head++; // head=3 || head = 5 || head = 7 || 9
  25.                                 }
  26.         return 0;
  27. }
复制代码

做了一些注释,不太清楚它的作用,看你的二号,难道是密码学的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-2 21:27:00 | 显示全部楼层
大马强 发表于 2021-8-2 18:59
一号我这里能够运行
不知道我输入的方式对不对,两个得到的结果是一样的,我就发一张图了

不好意思啦,可能是我没有说清楚。
对于某些数据他们都是能够运行,但是1号代码呢他可能某些数据就无法运行,所以他通不过OJ平台的测试。
但是问题是我不知道错漏在哪里,也不知道应该如何进行全面的测试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-2 21:28:58 | 显示全部楼层
我用dev可以运行,没有报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-2 21:29:19 | 显示全部楼层
大马强 发表于 2021-8-2 19:26
做了一些注释,不太清楚它的作用,看你的二号,难道是密码学的?

不是。
1号和2号都是同一个目的。这两个都是根据一种规则对一组数进行重新排序
不过在一个OJ平台上1号不能通过调试。我不知道问题出在哪里
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-2 21:29:43 | 显示全部楼层
OJ平台是啥?求科普
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-2 21:55:35 | 显示全部楼层
那我也帮不来了,没用过,知识盲区了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-4 16:48:58 | 显示全部楼层
大马强 发表于 2021-8-2 21:29
OJ平台是啥?求科普

啊哈算法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-4 16:49:35 | 显示全部楼层
大马强 发表于 2021-8-2 21:29
OJ平台是啥?求科普

不是,是啊哈添柴
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 02:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表