鱼C论坛

 找回密码
 立即注册
查看: 1930|回复: 7

学生代码提交 总显示错误

[复制链接]
发表于 2020-5-12 19:24:27 | 显示全部楼层 |阅读模式

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

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

x
能想到的测试数据都正确,但是提交总是错误%67,该怎么解决。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-12 19:28:01 | 显示全部楼层
代码呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-12 19:28:38 | 显示全部楼层
还有题目
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-12 19:30:48 | 显示全部楼层
1,不给我们代码
2,不给我们题目
3,不给我们测试平台
我们怎么回答??猜吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-12 19:31:48 | 显示全部楼层
现有N个任务等处理,完成每个任务需要的时间分别为T1,T2,...(设为整数),处理任务的机器共有2台,要求将这些任务顺序分配给这两台机器处理,分配的原则是当前哪台机器处理任务的时间短就分配给哪台机器(如果当前两台机器处理完成任务的时间相同,则分配给第1台机器),要求按被处理完时间的先后顺序输出对应的任务号。
提示:设置两个队列,第一个队列存储分配给第一台机器的任务号,第二个队列存储分配给第二台机器的任务号。
函数initQueue完成队列初始化;queueEmpty判断队列是否为空;enQueue实现入队操作;deQueue实现出队操作;getHead获取队头元素;createJobs实现任务执行时间的输入,并将任务加入到相应的队列;dealJobs实现根据任务完成时间出队列,并输出任务编号



#include <stdio.h>
#include <stdlib.h>

#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXSIZE 20 /* 队列存储空间初始分配量 */

typedef int Status;
//构建任务数据类型
typedef struct {
        int id;//任务编号
        int starttime;//任务开始时间
        int runtime;//任务运行时间
} QElemType;

/*循环队列的顺序存储结构
  采用少用一个元素的方法实现,
  即队列空间为 MAXSIZE,则有MAXSIZE-1个元素时则认为队列满。
*/
typedef struct {
        QElemType data[MAXSIZE];
        int front;    /* 头指针 */
        int rear;     /* 尾指针,若队列不空,指向队列尾元素的下一个位置 */
} SqQueue;

Status initQueue(SqQueue &Q);
Status queueEmpty(SqQueue Q);
void enQueue(SqQueue &Q,QElemType e);
Status deQueue(SqQueue &Q,QElemType &e);
QElemType getHead(SqQueue Q);
void createJobs(SqQueue &A,SqQueue &B,int jobsNum);
void dealJobs(SqQueue &A,SqQueue &B);

int main(void) {
        int jobsNum;  //任务数目
        SqQueue A,B;
        initQueue(A);
        initQueue(B);
        scanf("%d", &jobsNum);
        createJobs(A,B,jobsNum);
        dealJobs(A,B);
        return 0;
}

/* 初始化一个空队列Q,头尾指针初始设置 */
Status initQueue(SqQueue &Q) {
        Q.front = 0;
        Q.rear = 0;
        return  OK;
}

/* 若队列Q为空队列,则返回TRUE,否则返回FALSE */
Status queueEmpty(SqQueue Q) {
        if(Q.front == Q.rear)
                return TRUE;
        return FALSE;
}

/*只提交以下代码*/
void enQueue(SqQueue &Q,QElemType e)
{
        if ((Q.rear+1)%MAXSIZE==Q.front) exit(0);
       
        Q.data[Q.rear]=e;
       
        Q.rear++;
}

Status deQueue(SqQueue &Q,QElemType &e)
{
        if (Q.front==Q.rear) exit(0);
       
        e=Q.data[Q.front];
       
        Q.front++;
}

QElemType getHead(SqQueue Q)
{
        return Q.data[Q.front];
}

void createJobs(SqQueue &A,SqQueue &B,int jobsNum)
{
        QElemType t;//e是结构体
        int i,ta=0,tb=0;
        for (i=1;i<=jobsNum;i++)
        {
                        scanf ("%d",&t.starttime);
                       
                        t.id=i;
       
                        if (ta<=tb)
                        {
                                enQueue(A,t);
                               
                                ta=ta+t.starttime;
                        }
                        else if(ta>tb)
                        {
                                enQueue(B,t);
                               
                                tb=tb+t.starttime;
                        }
        }       
}

void dealJobs(SqQueue &A,SqQueue &B)
{
       
        QElemType a,b,e,t;
       
        while (!queueEmpty(A)&&!queueEmpty(B))
        {
               
                if (a.starttime==0)        a=getHead(A);
         
                 if (b.starttime==0) b=getHead(B);
                       
                if (a.starttime<b.starttime)
                {
               
                        b.starttime=b.starttime-a.starttime;
                       
                        printf ("%d ",a.id);
                       
                        a.starttime=0;
                       
                        deQueue(A,e);
                               
                }
               
                else if(a.starttime==b.starttime)
               
                {
                        printf ("%d %d ",a.id,b.id);
                       
                        a.starttime=0; b.starttime=0;
                       
                        deQueue(A,e); deQueue(B,e);
                 }
               
                else if(a.starttime>b.starttime)
                {
                        a.starttime=a.starttime-b.starttime;
                       
                        printf ("%d ",b.id);
                       
                        b.starttime=0;
                       
                        deQueue(B,e);
                       
                }
         } //whlie
         while(!queueEmpty(A))
         {
                 a=getHead(A);
                
                 printf ("%d ",a.id);
                
                 deQueue(A,e);
         }
         while(!queueEmpty(B))
         {
                b=getHead(B);
                
                 printf ("%d ",b.id);
                
                 deQueue(B,e);
         }
}

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

使用道具 举报

 楼主| 发表于 2020-5-12 19:32:30 | 显示全部楼层

样例输入 Copy

4
10 30 15 8



样例输出 Copy

1 3 2 4
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-12 19:33:21 | 显示全部楼层
qiuyouzhi 发表于 2020-5-12 19:30
1,不给我们代码
2,不给我们题目
3,不给我们测试平台

来了,来了

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

使用道具 举报

发表于 2020-5-12 19:39:38 | 显示全部楼层

你看,我用Dev-C++运行测试用例都错误,
应该输出1 3 2 4,你的程序输出的是 4 4 3 4
如果不是编译器问题,我想你应该检查下代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-14 02:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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