CodeCraft第一步

今天本来想放一张图片在这个文档上面的,但是这个网站提示我Upload文件夹没有写入的权限,暂且留到后面弥补吧。

目前我们队伍的当前区域排名是60名,成绩为50.42分,看着还不错的样子,实际上我们一点点算法都没有用,完全是用测试用例上交的代码。哈哈,永远得出的是最快的,但求出的方案永远是费用最高的(直连算法)。昨天花了一个下午的时间写的东西在answer_demo里面都有,而且代码写的非常漂亮,也极为高效。

下面简单讲一下今天的收获吧。主要以deploy.cpp为主讲一下。

第一点就是人家读取参数简单高效,直接一个个的读取字符(而我之前的做法是把字符串重新转成输入流,这道行真的是相差十万八千里了,明天有空的话跟大家献个丑)。举例如下:

char *c;
int spaceCount = 0;
c = topo[0];
while (*c != '\0' && *c != '\n' && *c != '\r')
{
    if (*c == ' ')
{
c++;
spaceCount++;
continue;
}
if (spaceCount == 2)
{
    consumerNum = *c - '0' + consumerNum * 10;
}
c++;
}

用spaceCount来区分一行的不同参数。先是读进来一个字符,判断它是不是奇怪的字符(比如\n \r \0),如果不是的话,就进入循环。

循环里面做两步选择

Step1:先判断它是不是空格,是空格的话那么c++,然后spaceCount++,continue一下,接着读取新的字符。

Step2:如果读取的字符不是空,看spaceCount是几,是0的话那么读取进来的就是第一个参数,如果是1的话读取进来的就是第二个参数,以此类推。以为读取进来的都是数字,先是把字符串转为数字(一步就好:'c'-'0'),如果再读取进来一个字符怎么办呢,新读取进来的字符肯定是权重比之前的要小,那么就把之前的保存的数乘以10,再加上新字符所对应的那个数字,这就好了(对不对,非常完美)。

第二点,它的输出也十分的棒,sprintf格式化输出,话说我怎么就没有想起来呢,肯定是C#编多了的缘故(我当时及其愚蠢的用了网上的一个函数int2string,真是打脸打到飞起啊)。 sprintf(a, "%d\n\n",consumerNum);怎么样,简单易懂。把格式化好的字符串直接赋值给string,res += a。

写到这里,看来以后还是得多学习啊。

转载于:https://my.oschina.net/u/3409831/blog/874088

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值