阿里笔试题二

#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
#include <limits.h>
#include <stdbool.h>

/** 请完成下面这个函数,实现题目要求的功能 **/
 /** 当然,你也可以不按照这个模板来作答,完全按照自己的想法来 ^-^  **/
int time_cal(int num_list1_input[], int num_list2_input[], int num_list3_input[], char char_list_input[], int length)
{
    for (int i = 0; i < length; ++i)
    {
        int j = 0;
        for (j = 0; char_list_input[j] != ' '; ++j)
        {
            num_list1_input[i] = char_list_input[j] - '0';
        }
        for (int k = j + 1; char_list_input[k] != '\0'; ++k)
        {
            num_list3_input[i] = char_list_input[k] - '0';
        }
        num_list2_input[i] = num_list3_input[i] - num_list1_input[i];
    }
}


void swap(int num_list1_input[], int num_list2_input[], int num_list3_input[], int length, int num1_input, int num2_input)
{
    int num1_cp = 0;
    int num2_cp = 0;
    int num3_cp = 0;
    num1_cp = num_list1_input[num1_input];
    num2_cp = num_list2_input[num1_input];
    num3_cp = num_list3_input[num1_input];
    num_list1_input[num1_input] = num_list1_input[num2_input];
    num_list2_input[num1_input] = num_list2_input[num2_input];
    num_list3_input[num1_input] = num_list3_input[num2_input];
    num_list1_input[num2_input] = num1_cp;
    num_list2_input[num2_input] = num2_cp;
    num_list3_input[num2_input] = num3_cp;  
}

void sort(int num_list1_input[], int num_list2_input[], int num_list3_input[], int length)
{
    int k = 0;
    for (int i = 0; i < length - 1; ++i)
    {
        k = i;
        for (int j = i + 1; j < length; ++j)
        {
            if (num_list1_input[k] > num_list1_input[j])
            {
                k = j;
            }
        }
        swap(num_list1_input, num_list2_input, num_list3_input, length, i, k);
    }
}

int findMeetingTime(int meetingTimeArray_size, char** meetingTimeArray) {
    int num_list_start[meetingTimeArray_size] = {0};
    int num_list_end[meetingTimeArray_size] = {0};
    int num_list_mid[meetingTimeArray_size] = {0};
    int time_count = 0;
    for (int i = 0; i < meetingTimeArray_size; ++i)
    {
        time_count = time_count + num_list_start[i] + num_list_mid[i];
        if (time_count >= num_list_end[i])
        {
            return -1;
        }
    }
    return 1;
}

int main() {
    int res;



    int _meetingTimeArray_size = 0;
    int _meetingTimeArray_i;
    scanf("%d\n", &_meetingTimeArray_size);
    char* _meetingTimeArray[_meetingTimeArray_size];
    for(_meetingTimeArray_i = 0; _meetingTimeArray_i < _meetingTimeArray_size; _meetingTimeArray_i++) {
        char* _meetingTimeArray_item;
        _meetingTimeArray_item = (char *)malloc(512000 * sizeof(char));
        scanf("\n%[^\n]", &_meetingTimeArray_item);

        _meetingTimeArray[_meetingTimeArray_i] = _meetingTimeArray_item;
    }


    int num_list_start[_meetingTimeArray_size] = {0};
    int num_list_mid[_meetingTimeArray_size] = {0};
    int num_list_end[_meetingTimeArray_size] = {0};
    time_cal(num_list_start, num_list_mid, num_list_end, _meetingTimeArray, _meetingTimeArray_size);
    sort(num_list_start, num_list_mid, num_list_end, _meetingTimeArray_size);

    res = findMeetingTime(_meetingTimeArray_size, _meetingTimeArray);
    printf("%d\n", res);

    return 0;

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值