问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c语言问题。。急!!

发布网友 发布时间:2022-04-20 03:58

我来回答

3个回答

热心网友 时间:2023-09-10 18:19

思路:

1、根据题意每天从区间1~N中,依次深度-1,遇到某个深度0时停止作业,所修改的区间就是当日作业区间。

2、独立函数实现一天作业(workForDay)。参数flag为1显示作业过程,如不需要传0。

3、init函数为输入并返回动态数组。

#include <stdio.h>

#include <malloc.h>

int len=0;//路面长度

int *init();//根据输入初始化深度数组,成功返回地址,失败返回NULL

int workForDay(int *dps,int flag);//执行一天填充作业。成功作业返回1,无需作业返回0, 异常返回-1

//flag=1,打印输出作业过程。flag=0,不打印过程

int main()

{

    int day=0,re,*dps=NULL;

    dps=init();

    if(!dps) return 1;

    while((re=workForDay(dps,1))==1)

        day++;

    if(re==-1) return 1;

    printf("共作业%d天\n",day);

    free(dps);dps=NULL;//在本程序可不释放,但如果多次调用init函数,每次用完数组,需这样释放内存。

    return 0;

}

int *init()

{

    int i,*dps=NULL;//dps每单位长度对应深度

    len=0;

    while(len<=0) scanf("%d",&len);//长度必须大于0整数

    dps=(int *)malloc(sizeof(int)*len);

    if(!dps) return NULL;

    for(i=0;(dps[i]=-1) && i<len;i++)

        while(dps[i]<0) scanf("%d",&dps[i]);//每个深度必须大于等于0整数

    return dps;

}

int workForDay(int *dps,int flag)

{

    int i,bn=-1,an=-1;

    if(!dps) return -1;

    for(i=0;i<len;i++)

    {

        if(bn==-1 && dps[i]>0)

            bn=i+1,an=bn,dps[i]--;

        else if(bn!=-1 && dps[i]>0)

            an=i+1,dps[i]--;

        else if(bn!=-1 && dps[i]==0)

            break;

    }

    if(bn==-1) return 0;

    if(flag) printf("当日作业区间为[%d,%d]\n",bn,an);

    return 1;

}

热心网友 时间:2023-09-10 18:20

//这应该是用贪心,我以前好像写过这个题,好像是洛谷的题
#include<stdio.h>
#define N 100010
int a[N];
int main() {
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++)
scanf("%d", &a[i]);
long long sum = a[0];
for (int i = 1; i < n; i++) {
if (a[i] > a[i - 1]) {
sum += a[i] - a[i - 1];
}
}
printf("%lld", sum);
return 0;
}

热心网友 时间:2023-09-10 18:20

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

#include <malloc.h>

#pragma warning(disable:4996)

unsigned int len = 1;//路面长度
unsigned int day = 0;

void init(unsigned int* dps);//根据输入初始化深度数组,成功返回地址,失败返回NULL

int workForDay(unsigned int* dps, int flag);//执行一天填充作业。成功作业返回1,无需作业返回0, 异常返回-1

//flag=1,打印输出作业过程。flag=0,不打印过程

int main()

{

unsigned int re, * dps = NULL;

scanf("%u", &len);//长度必须大于0整数

dps = (unsigned int*)malloc(sizeof(unsigned int) * len);

init(dps);

while ((re = workForDay(dps, 1)) == 1)

day++;

if (re == -1) return 1;

printf("共作业%u天\n", day);

free(dps);
dps = NULL;//在本程序可不释放,但如果多次调用init函数,每次用完数组,需这样释放内存。

return 0;

}

void init(unsigned int* dps )

{

unsigned int i;

for (i = 0; i < len; i++)

{
scanf("%u", &dps[i]);//每个深度必须大于等于0整数
}

}

int workForDay(unsigned int* dps, int flag)

{

unsigned int i;
int bn = -1, an = -1;

if (!dps) return -1;

for (i = 0; i < len; i++)

{

if (bn == -1 && dps[i] > 0)

{
bn = i + 1;
an = bn;
dps[i]--;
}

else if (bn != -1 && dps[i] > 0)

{
an = i + 1;
dps[i]--;
}

else if (bn != -1 && dps[i] == 0)

break;

}

if (bn == -1) return 0;

if (flag) printf("第%u日作业区间为[%d,%d]\n",day+1, bn, an);

return 1;

}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎样让孩子主动找老师补课? 表格列求和公式怎么设置 求和函数公式怎么输入 北京注册成立一个公司需要多少钱 北京公司都是什么 手机导航地图语音怎么下载 如何分别真金和仿金首饰 怎样区分真金和仿金首饰呢 小学生新年晚会主持人的串词!!(不要太多)急 大大后天就需要了!!!_百度... 周年晚会策划公司 奥格瑞玛传送门大厅在哪 苹果查序列号FFMTVZ2DHXR6 上海S5往市区方向,在与中环衔接处,从左往右第三... 什么是指连入网络的不同档次不同型号的微机 H3C S5500-28C-EI是二层还是三层? 咨询一下,H3C S5560S三层交换机的4个SFP光口可以... h3c 的s5系列 和s3,s2,s1.他们的区别是什么 中国玉石雕刻大师的雕刻大师名单 和田玉国家一级工艺大师有哪些 文心读玉的成员 中国的翡翠雕工大师,最好有简介 带图片 带简介 带... 你好,碎纸机碎出来的纸怎么回收啊? 办公用品中包括哪些?东四附近有没有好的办公用品... 碎纸机碎过的纸有什么用 这个里面的碎纸叫什么 碎纸机碎过的纸造纸厂能回收吗? 科密牌碎纸机维修售后服务怎么样? 碎纸机切碎的纸屑有没有利用价值? 现在的纸张卖多少钱一斤? 碎纸机粉碎的纸能卖多少钱? 最便宜的碎纸机价钱 武林外传新手卡怎么用 C语言问题!急!! 卡巴斯基6.0 的激活码谁有啊 有K也行 谢谢啦 着急!!! C语言问题.急! 关于中国移动的充话费送礼品的事情。求解。 电源输入:DC 5V 500mA 是什么意思? 电玩城里面的抓鱼有什么技巧。? 谢谢说哈 flygram是什么软件? 电玩鲨鱼机具体有什么技巧 flygram是什么软件 flygram是什么意思? 在电玩城玩捕鲨鱼有窍门吗,请帮帮忙吧 Flygram软件的京东派件是真的吗? flygram网络请求失败是怎么回事 电玩厅捕鱼和疯狂牛仔的秘籍请帮帮我呀~ flygram老是请求失败 手游电玩捕鱼,有哪些变化? 电玩捕鱼海王2什么弹好 电玩捕鱼的精灵召唤完是永久使用的吗 比如船长 电玩捕鱼为什么有时鱼一下打死了