建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块

柒仟

发帖: 2粉丝: 3

级别 : 版主

Rank: 7Rank: 7Rank: 7

发消息 + 关注

发表于2018-12-17 09:52:41 66059 142 楼主 显示全部楼层
 关闭 [活动/公告] 【获奖公告】【开发者英雄大会】寻找超级算法大师-DevCloud赛道

软件 copy.png


2019.3.6更新

公示期结束,获奖公告生效!

我们将在10个工作日内完成快递发放~

感谢各位小伙伴对本次活动的支持,下次活动再见咯~



2019.2.28更新

各位伙伴们,又久等了~

在修改算法评估维度、排除异常输入后,已从提交的算法作品中评选出一个最优算法,公布获奖名单如下:

最优算法(排除异常输入)获奖名单:

奖项种类

奖品名称

获奖用户(华为云ID)

论坛昵称

最优算法(排除异常输入)

荣耀8X手机*1(实物)

easyx

yw80

获奖算法作品源码如下:

// 计算日期差
// 编译环境:VS2017,C++ 语言
// 华为云用户:easyx
// 该算法没有使用任何第三方库,也没有使用 c/c++ 的自带日期库进行计算(其实这个算法很普通很常见的)
//
#include <stdio.h>

// 计算从 0001-01-01 起的天数
int countdays(int y, int m, int d)
{
	if (m < 3)	y--, m += 12;
	return 365 * y + (y >> 2) - y / 100 + y / 400 + (153 * m - 457) / 5 + d - 306;
}

int main()
{
	// 输入目标日期
	printf("Input:");
	int year, month, day;
	scanf_s("%d-%d-%d", &year, &month, &day);	// 使用 vc 的安全版本的 scanf
//	scanf("%d-%d-%d", &year, &month, &day);		// gcc 请使用这行输入替代上一行

	// 输出与 2016-12-22 的日期差
	printf("Output:%d\n", countdays(year, month, day) - countdays(2016, 12, 22));

	return 0;
}

获奖作品点评:

  • 2月是判断闰年的标识,获奖作品巧妙的利用了是否小于3月,用以纪录到3月的间隔月数,同时判断出是否包括当前年;(y >> 2) - y / 100 + y / 400 很巧妙的算出了所有闰年多出的那一天。



此获奖公告公示期持续5天(3月1日-3月5日)

在公示期内,若对获奖作品存有异议请反馈至楼主,将另开新帖处理异议。

公示期结束后,获奖公告生效;请获奖者在5个工作日私聊楼主收货信息,实物奖品预计在10个工作日内完成快递发放。


也欢迎获奖者分享算法解题思路,探讨算法精髓~

接下来我们仍会推出类似活动,欢迎大家参加哦~敬请期待!!!


获奖者的解题思路分享参见此帖:

https://bbs.huaweicloud.com/forum/thread-14636-1-1.html







2019.2.22更新:

我们将在不考虑异常输入的前提下,评选一个最优算法,回馈各位伙伴们!

评估工作预计耗时5个工作日,届时获奖名单及代码将在本帖公布。

在后续的活动中,我们会持续优化活动形式及算法的评估方式,给大家更好的体验!

谢谢!




各位伙伴们,久等啦!!!

我们已完成对所有提交算法的评选,公布获奖名单如下:

一等奖获奖名单:

奖项种类

奖品名称

获奖用户(华为云ID)

一等奖

荣耀8X手机*1(实物)

wupeng2302

恭喜斩获一等奖,请于2.20前私信楼主收货信息哈~

二等奖获奖名单:

奖项种类

奖品名称

获奖用户(华为云ID)

二等奖

华为云200元代金券*1(虚拟)

ad123445

二等奖

华为云200元代金券*1(虚拟)

andyleung

二等奖

华为云200元代金券*1(虚拟)

breakingdawn

二等奖

华为云200元代金券*1(虚拟)

chen_hunter

二等奖

华为云200元代金券*1(虚拟)

ciscogeek

二等奖

华为云200元代金券*1(虚拟)

clthinking

二等奖

华为云200元代金券*1(虚拟)

conquerok

二等奖

华为云200元代金券*1(虚拟)

daleilei

二等奖

华为云200元代金券*1(虚拟)

duanqiong

二等奖

华为云200元代金券*1(虚拟)

east119

二等奖

华为云200元代金券*1(虚拟)

easyx

二等奖

华为云200元代金券*1(虚拟)

ecstatic

二等奖

华为云200元代金券*1(虚拟)

fancanny

二等奖

华为云200元代金券*1(虚拟)

fanxijing

二等奖

华为云200元代金券*1(虚拟)

fc013

二等奖

华为云200元代金券*1(虚拟)

flexie

二等奖

华为云200元代金券*1(虚拟)

flyerflyme

二等奖

华为云200元代金券*1(虚拟)

hahahahazzq

二等奖

华为云200元代金券*1(虚拟)

HelloWor1d

二等奖

华为云200元代金券*1(虚拟)

Hero-xy

二等奖

华为云200元代金券*1(虚拟)

HUAWEI_TX

二等奖

华为云200元代金券*1(虚拟)

huyulei

二等奖

华为云200元代金券*1(虚拟)

JaneConan

二等奖

华为云200元代金券*1(虚拟)

jijun_gao

二等奖

华为云200元代金券*1(虚拟)

jwkjdj

二等奖

华为云200元代金券*1(虚拟)

kf_wuchangze

二等奖

华为云200元代金券*1(虚拟)

kiloyqp

二等奖

华为云200元代金券*1(虚拟)

krissi

二等奖

华为云200元代金券*1(虚拟)

leizh07

二等奖

华为云200元代金券*1(虚拟)

lggggg

二等奖

华为云200元代金券*1(虚拟)

lishuimo

二等奖

华为云200元代金券*1(虚拟)

liumei616

二等奖

华为云200元代金券*1(虚拟)

liweigu

二等奖

华为云200元代金券*1(虚拟)

liyapeng

二等奖

华为云200元代金券*1(虚拟)

lowrie

二等奖

华为云200元代金券*1(虚拟)

lucky222

二等奖

华为云200元代金券*1(虚拟)

mingkegu

二等奖

华为云200元代金券*1(虚拟)

motozilog

二等奖

华为云200元代金券*1(虚拟)

musesun

二等奖

华为云200元代金券*1(虚拟)

nba_my_time

二等奖

华为云200元代金券*1(虚拟)

nicetn

二等奖

华为云200元代金券*1(虚拟)

qcjxs

二等奖

华为云200元代金券*1(虚拟)

qinyueming

二等奖

华为云200元代金券*1(虚拟)

qiujiahong

二等奖

华为云200元代金券*1(虚拟)

rexindage

二等奖

华为云200元代金券*1(虚拟)

shenhaodong

二等奖

华为云200元代金券*1(虚拟)

shower1986

二等奖

华为云200元代金券*1(虚拟)

victorwoo

二等奖

华为云200元代金券*1(虚拟)

wangfenga

二等奖

华为云200元代金券*1(虚拟)

wangkang_199206

二等奖

华为云200元代金券*1(虚拟)

wenqishd

二等奖

华为云200元代金券*1(虚拟)

wupeng2302

二等奖

华为云200元代金券*1(虚拟)

wychencr

二等奖

华为云200元代金券*1(虚拟)

xiaochong2018

二等奖

华为云200元代金券*1(虚拟)

xiaomengbot

二等奖

华为云200元代金券*1(虚拟)

xiaoxiu

二等奖

华为云200元代金券*1(虚拟)

xingshiqi

二等奖

华为云200元代金券*1(虚拟)

XiongXiong666

二等奖

华为云200元代金券*1(虚拟)

xiwanglr

二等奖

华为云200元代金券*1(虚拟)

YoungCauliflower

二等奖

华为云200元代金券*1(虚拟)

Yuanshuai_

二等奖

华为云200元代金券*1(虚拟)

z00342199

二等奖

华为云200元代金券*1(虚拟)

zhanglucy

二等奖

华为云200元代金券*1(虚拟)

zyfhuawei-test

恭喜以上获奖的小伙伴们,二等奖为虚拟代金券,将于2.20前直接发至小伙伴们的华为云ID中~

锦鲤奖获奖名单:

奖项种类

奖品名称

获奖用户(论坛昵称)

回帖楼层

锦鲤奖

定制超大鼠标垫*1(实物)

flyerflyme

10#

锦鲤奖

定制超大鼠标垫*1(实物)

熊熊

36#

锦鲤奖

定制超大鼠标垫*1(实物)

Nick   Qiu

54#

锦鲤奖

定制超大鼠标垫*1(实物)

mk_2004

62#

锦鲤奖

定制超大鼠标垫*1(实物)

future

84#

锦鲤奖

定制超大鼠标垫*1(实物)

Yuanshuai_

105#

锦鲤奖

定制超大鼠标垫*1(实物)

nba_my_time

137#

恭喜大大大锦鲤们,也请于2.20前私信楼主收货信息哈~



补充一等奖获得者的算法解题思路:

/**程序说明: 
**		本程序实现0~9999年任意时间与2016-12-22的天数差。
**		本程序除I/O方法为库函数外,其余一切函数均为自主实现(包括常用的算术类,阶乘等函数)。
**		可测试多组数据。 
**主要思想以及算法:
**		利用字典法+补偿法。先计算出目标日期与定点日期的年份差。然后计算出相差的年份中有多少个闰年(记为补偿)。
**		2016-12-22已经度过的天数为偏置(bias),最终天数差sum= 年份差*365 +字典月份的天数+偏置(bias)+补偿。
**		核心代码算法复杂度为O(1)。 
**模型假设: 
**		1、本程序假定平年有365天,闰年366天,不考虑特殊情况(如:1582年10月少了10天的情况) 。
** 		2、默认输入日期小于2016-12-22的。相隔天数以负数输出。
**		3、输入数据格式请严格准守XXXX-XX-XX的格式,否则程序将数据判断为非法输入。并输出:Error data的提示 
**程序流程:
**		1、输入数据。
**		2、数据格式转化(将输入的字符串转化为整型数据) 
**		3、判断数据是否非法(如月数<1。天数为负数,等等)。 
**		4、计算并输出结果。
**程序拓展:
**		可将代码中的硬编码-定点日期(2016-12-22)改为用户输入时,可在O(1)的时间内计算任意2个日期之间天数。 
**/

 补充一等奖获得者的算法代码:

#include<stdio.h>

#define N 12

/*辅助函数,阶乘方法(由于不能是用第三方类,所以只能自己写阶乘类了)*/
static int MyPow(int a,int b){
	int sum=1;
	for(int i=0;i<b;i++){
		sum*=a;
	}
	return sum;
}
/*判断输入是否合法,利用查字典法+补偿法*/ 
bool judge(const int year,const int month,const int days,bool flag){
	int day[]={31,28,31,30,31,30,31,31,30,31,30,31};
	return ((year>=0&&year<=9999)&&(month>0&&month<=12)&&(days>0&&days<=(day[month-1]+(int)flag)));
} 
/*将输入的字符串利用1次遍历转化为3个整型数据,偏于后续计算。*/
void  TurnStringToInt(char *string,int length,int *year,int *mon,int *day){
	int flag=0;
	int count=0;
	*year=0;//由于要实现多个测试数据,所以必须重置year,mon,day. 
	*mon=0;
	*day=0;
	for(int i=length-1;i>=0;i--){
		if(string!='-'){
			if(flag==0){
				(*day)+=(int)(string-'0')*MyPow(10,count++);
			}else if(flag == 1){
				(*mon)+=(int)(string-'0')*MyPow(10,count++);
			}else{
				(*year)+=(int)(string-'0')*MyPow(10,count++);
			}
			
		}else{
			flag++;
			count=0;
		}
		
	}
} 

int main(){	
	int dictionary[N]={0,31,59,90,120,151,181,212,243,273,304,334};//建立12个月的字典 默认2月为28天,后面再补偿。
	char data[10];//储存输入的日期. 
	int year=0,mon=0,days=0,sum=0,bias=357,min;//bias 为2016.12.22距离2016年的天数(为了方面计算负值) ,min为输出年数与2016年数差。
	bool  flag2;// 判断当前是否为闰年
	int flag,flag1;	//补偿天数。 
	while(gets(data)){//可循环输入测试数据 
	TurnStringToInt(data,10,&year,&mon,&days);//将输入的字符串转化为3个整数。
	flag2 = (year%400==0||(year%4==0&&year%100!=0));//判断当前是否为闰年 
	if(judge(year,mon,days,flag2)){	//判断数据是否合法 
		min = year-2016;
		flag = (int)(flag2&&mon<3);//(bool转成int)判断输入的月份是否在闰年的3月前,为了补偿2月的1天。 
		flag1 =  (int)((min>0)||(min>=0&&mon>12)||(min>=0&&mon>=12&&days>22)); //(bool转成int)判断输入的时间是否小于定点时间, 
		//(min/4)-((min+16)/100)+((min+16)/100)/4 为闰年2月的补偿  dictionary[mon-1]  查字典   days当月的天数 min*365相隔的年数转化为天。
		sum = (min/4)-((min+16)/100)+((min+16)/100)/4+dictionary[mon-1]+days-bias+(min)*365;
		sum = sum-flag+flag1+(int)(flag1==0&&flag2);//补偿的天数(包含多种补偿,闰年补偿,小于定点日期补偿等。)。 
		printf("%d\n",sum);//输出 
		}
	else{
		printf("Error data\n");
	} 
	}		
	 return 0;
}




活动结束啦!

感谢各位伙伴们的支持~

我们将开始对已提交的算法进行评选,不过春节临近,评选结果和开奖公告将于节后一周内在本帖公布。

请小伙伴们理解

再次感谢各位伙伴们的支持,谢谢!


算法+数据结构=程序

如今璀璨的虚拟世界 便是由无数个精美的算法堆砌而成

是否想过 你指下诞生的一段段代码 

或许可以改变世界

来!DevCloud与你一起,迈出第一步

向下.png


01. 

活动参与流程


1.创建DevCloud项目  →   2.提交算法解题代码  →  3.本帖回复代码仓库截图  →  4.等待算法评估及奖励发放


02. 

算法题目


题目
输入一个日期,格式为xxxx-xx-xx(年-月-日),计算其距离 2016-12-22 的天数。
//2016-12-22是DevCloud的生日哦~

示例1
Input:2018-12-22
Output:730

示例2
Input:2020-12-22
Output:1461

立即参与.png     流程指引.png


03. 

奖项设置


奖项设置.png




04. 

活动时间

2018.12.24 - 2019.1.31


05. 

奖项评选规则


1. 一等奖评选

DevCloud专家评审团在所有提交的算法中,以测试用例通过率、思路独特性、实现精简度、算法时间复杂度、算法空间复杂度等维度,评选出一个最优算法并发放一等奖。

2. 二等奖评选

所有参与用户,提交的算法测试用例通过率≥80%,即可获得二等奖;代金券适用于部分华为云产品,详情请在收到代金券后进入费用中心确认。

3. 锦鲤奖评选

在本帖中回复DevCloud已提交代码的截图即视为有效回帖,每20个有效回帖中抽取一位锦鲤奖获奖用户。


06. 

注意事项


1. 算法代码不限制编码语言,但请勿使用第三方函数库,否则视为无效。

2. 请务必保证算法的原创性,如出现重复代码,提交时间早的视为有效,其他均视为无效并取消所有奖项的获奖资格。

3. 请务必按要求格式进行有效回帖,后台会对所有回帖的有效性进行核实,一经发现无效回帖将取消获奖资格。

4. 获奖名单将在活动结束后5个工作日内,经由专家评审团评选后于活动贴中公布。获奖用户请于奖项公布后的3个工作日内完成华为云账号实名认证,并私信楼主收货信息,否则视为放弃。

5. 所有奖品将在奖项公布后的10个工作日内完成快递发放。奖品视为特殊商品,颜色和型号随机发送,且发出后不予退换。

6. 请大家文明参与活动,凡涉及在论坛灌水、作弊等违规行为,一经查出,将取消获奖资格。

7. 参与活动用户请遵守华为云社区常规活动规则

回复 举报
分享

分享文章到朋友圈

分享文章到微博

建赟

发帖: 172粉丝: 12

级别 : 版主

Rank: 7Rank: 7Rank: 7

发消息 + 关注

发表于2018-12-20 11:52:14 沙发 显示全部楼层

屏蔽了

点评

活动即将开启,请稍候~  发表于 2018-12-24 14:23
前排挤挤,求中奖,求荣耀8X!  发表于 2019-1-31 09:38
点赞 回复 举报

JaneConan

发帖: 0粉丝: 1

级别 : 新手上路

Rank: 1

发消息 + 关注

发表于2018-12-24 16:14:40 地板 显示全部楼层

华为云账号ID:JaneConan

采用技术栈:JAVA

JaneConan.png

点评

顶你: 5.0
顶你: 5
私自做主赐你“闪电侠”称号,简直太快~​  发表于 2018-12-24 16:25
谢谢,还望您们多多点评指导☺ง  发表于 2018-12-25 19:07
你是最快的  发表于 2019-1-9 10:40
点赞 回复 举报

motozilog

发帖: 3粉丝: 0

级别 : 新手上路

Rank: 1

发消息 + 关注

发表于2018-12-24 16:36:44 5# 显示全部楼层

华为云账号ID:motozilog

采用技术栈:C#

QQ截图20181224163617.png


点评

顶你: 5.0
顶你: 5
回帖有效,墙都不扶就服你,简直666...  发表于 2018-12-24 16:42
点赞 回复 举报

ecstatic

发帖: 9粉丝: 4

级别 : 版主

Rank: 7Rank: 7Rank: 7

发消息 + 关注

发表于2018-12-24 17:18:30 7# 显示全部楼层

华为云账号ID:ecstatic

采用技术栈:java333.PNG


点评

顶你: 5.0
顶你: 5
回帖有效,给你大赞~  发表于 2018-12-24 18:02
点赞 回复 举报

蓝书签

发帖: 54粉丝: 16

级别 : 版主

Rank: 7Rank: 7Rank: 7

发消息 + 关注

发表于2018-12-24 21:09:18 8# 显示全部楼层

华为云账号ID:lishuimo

采用技术栈:C

image.png

点评

顶你: 5.0
顶你: 5
回帖有效,请留意活动结束后开奖公告哈~  发表于 2018-12-25 09:26
点赞 回复 举报

云开雾散

发帖: 9粉丝: 2

级别 : 版主

Rank: 7Rank: 7Rank: 7

发消息 + 关注

发表于2018-12-24 23:57:45 9# 显示全部楼层

华为云账号ID:xiaomengbot

采用技术栈:python

1545666966.jpg

点评

顶你: 5.0
顶你: 5
回帖有效,请留意活动结束后开奖公告哈~  发表于 2018-12-25 09:27
点赞 回复 举报

flyerflyme

发帖: 0粉丝: 0

级别 : 新手上路

Rank: 1

发消息 + 关注

发表于2018-12-25 10:44:49 10# 显示全部楼层

华为云账号ID:flyerflyme

采用技术栈:C

QQ截图20181225104213.png

点评

回帖有效,请留意活动结束后开奖公告哈~  发表于 2018-12-25 10:58
点赞 回复 举报

Hero

发帖: 4粉丝: 2

级别 : 注册会员

Rank: 2

发消息 + 关注

发表于2018-12-25 11:06:06 11# 显示全部楼层

华为云账号 : HUAWEI_TX


微信图片_20181225110015.png

点评

回帖有效,请留意活动结束后开奖公告哈~  发表于 2018-12-25 11:47
点赞 回复 举报

andyleung

发帖: 4粉丝: 3

级别 : 版主

Rank: 7Rank: 7Rank: 7

发消息 + 关注

发表于2018-12-25 17:36:52 12# 显示全部楼层

华为云账号ID:andyleung

采用技术栈:JAVA

image.png


点评

回帖有效,请留意活动结束后开奖公告哈~  发表于 2018-12-25 17:46
点赞 回复 举报

游客

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