&豪
豪->blog
C++博客
首页
新随笔
联系
聚合
管理
随笔 - 87 文章 - 279 trackbacks - 0
<
2024年8月
>
日
一
二
三
四
五
六
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
潜心看书研究!
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(19)
给我留言
查看公开留言
查看私人留言
随笔分类
(81)
AJAX(1)
C++之梦(11)
DesignPattern(1)
PHP之路(10)
TCP/IP
VC
计算机图形学(2)
生活感想(24)
算法&ACM(32)
文章分类
(89)
ACM题目(26)
apache(3)
Basic C++(8)
Java(4)
Linux(3)
MFC(2)
mysql(2)
php学习与实践(4)
Python(1)
string match(3)
操作系统(1)
计算机(1)
数据结构与算法(29)
数论(1)
网络(1)
相册
MY LIFE
MY PRODUCTION
SCUT/ICPC MY TEAM
ACM OJ
HOJ
POJ
TOJ
URAL
UVA
ZOJ
My friends
Apple's Garden
asp's blog
chgsh's blog
evicn's blog
jay_zzw's blog
shyli's blog
sicheng's blog
xmm's blog
豪的space
踏雪赤兔's blog
搜索
积分与排名
积分 - 213193
排名 - 116
最新评论
1. re: 使用JS呼叫另一PHP程式后直接返回数值而不必翻新页面(转)
123456
--Jaxk
2. re: qsort函数应用大全(转)
对头@莫名
博主谢谢分享,学习了!
--呵呵哒
3. re: 三次样条插值
评论内容较长,点击标题查看
--mrsong123mtr
4. re: 三次样条插值
请楼主加解释啊,表示好难懂
--mrsong123mtr
5. re: 三次样条插值
楼主写的是自然边界条件的样条插值。。。可以参考 《计算方法》一书
--juy
阅读排行榜
1. 中国剩余定理(同余方程组)小结(11567)
2. 扫描线-通用多边形填充算法(7755)
3. 变量初始化的重要性!(3546)
4. 三次样条插值(3439)
5. 内存池(version1.1)(3249)
评论排行榜
1. 好高兴啊,a+b那题一次通过啦,acm有个好开始!!!^_^(27)
2. 看 c++primer 后的一个问题(14)
3. 今天又过条简单题,呵呵(14)
4. 变量初始化的重要性!(11)
5. 今天有点郁闷!~(9)
变量初始化的重要性!
今天在做一道华为面试题目时候,就是因为没有将变量初始化,而导致我用了一节课的时间调试:)
题目是:找出01字符串中0和1出现的最大次数.
代码:
#include
<
iostream
>
#include
<
string
>
using
namespace
std;
void
main()
{
char
*
a
=
"
010000010111101101000000000
"
;
int
i,temp0
=
0
,temp1
=
0
,max0
=
0
,max1
=
0
;
//
对变量初始化,如果不初始化,变量值是随机的
for
(i
=
0
;i
<
strlen(a);i
++
)
{
switch
(a[i])
{
case
'
0
'
:
{
temp0
++
;
if
(a[i
+
1
]
==
'
1
'
||
i
==
strlen(a)
-
1
)
{
if
(max0
<
temp0) max0
=
temp0;
temp0
=
0
;
}
break
;
}
case
'
1
'
:
{
temp1
++
;
if
(a[i
+
1
]
==
'
0
'
||
i
==
strlen(a)
-
1
)
{
if
(max1
<
temp1) max1
=
temp1;
temp1
=
0
;
}
break
;
}
}
}
cout
<<
"
max0=
"
<<
max0
<<
endl;
cout
<<
"
max1=
"
<<
max1
<<
endl;
}
那为什么不对i初始化呢?因为尽管i没被初始化,它的初始值是随机的,但在循环参数表里面已经对他进行赋值,所以i的随机值已经被0覆盖。
posted on 2005-11-22 00:40
豪
阅读(3546)
评论(11)
编辑
收藏
引用
所属分类:
C++之梦
FeedBack:
#
re: 变量初始化的重要性! 2005-11-22 10:10
沐枫网志
#include <iostream>
void main()
{
char *a="010000010111101101000000000";
int max[2] = {0, 0};
int count[2] = {0, 0};
while(*a)
{
int index = *a - '0';
count[index] ++;
count[index^1] = 0; // count[index?0:1] = 0; // count[index==0?1:0] = 0;
if(count[index] > max[index])
max[index] = count[index];
a++;
}
std::cout << "max 0: " << max[0] << std::endl;
std::cout << "max 1: " << max[1] << std::endl;
}
// output
// max 0: 9
// max 1: 4
点评:
1. 就C字串来说,从头到尾的遍历不需要for,用while是最佳选择。
2. strlen是很浪费的操作,如果非要用,对同一个不变长度的字串来说,用一个变量来存储,然后重复使用,比重复计算strlen要好得多。
3. 对数字串来说,可以直接将字符减去'0'得到相应的数字。
4. 比较判断其实并不比赋值省时,有时候直接赋值,比起比较后再赋值可能更有效率。更何况你的判断条件达三条之多才决定是否需要赋值。
所以if(a[i+1]=='0'/*或'1'*/||i==strlen(a)-1)可以省掉。
5. 利用数组的下标,会给你带来意想不到的简洁。
6. 最后,变量没有初始化,是算法设计的问题。如果初始条件都没有确定,只能说明你的算法没有想清楚。
回复
更多评论
#
re: 变量初始化的重要性! 2005-11-22 13:02
豪
非常感谢网志兄的点评,又学到东西啦!
这六条评论真是受益匪浅啊!
谢谢:)
回复
更多评论
#
re: 变量初始化的重要性! 2005-11-22 13:06
豪
count[index^1] = 0; // count[index?0:1] = 0; // count[index==0?1:0] = 0;
这一行不懂。。。能否解释一下,谢谢:)
回复
更多评论
#
re: 变量初始化的重要性! 2005-11-22 13:09
豪
查了一下^是按位移或,不过我对位操作一窍不通。。。。。。。。
回复
更多评论
#
re: 变量初始化的重要性! 2005-11-22 13:29
可冰
count[index^1] = 0; // count[index?0:1] = 0; // count[index==0?1:0] = 0;
//===========================
觉得不如下面这个可读性好或简洁:
count[ ! index ] = 0;
个人意见哈^-^
回复
更多评论
#
re: 变量初始化的重要性! 2005-11-22 13:35
沐枫网志
意思是,这三条都可以。你可以选一条你认为能够理解的就可以了。
我建议用
count[index==0? 1 : 0] = 0;
至于可冰的count[!index] = 0;我觉得不好。!是表示逻辑非的操作,用在此处会让人误会,代码不好读。
回复
更多评论
#
re: 变量初始化的重要性! 2005-11-22 21:10
豪
呵呵,我明白啦,感谢大家啊!
回复
更多评论
#
re: 变量初始化的重要性! 2005-11-28 11:16
很土
变量随定义随初始化,随时的错误检查,这些都是c/c++编程必须要养成的"习惯".有无数的错误和这两个有关.
回复
更多评论
#
re: 变量初始化的重要性! 2005-11-30 12:47
豪
感谢土哥!
回复
更多评论
#
re: 变量初始化的重要性! 2010-05-06 14:00
xypforever
@沐枫网志
这位兄弟令人佩服
回复
更多评论
#
re: 变量初始化的重要性![未登录]
2010-08-03 16:11
wang
两个程序效率比 2.8:1
回复
更多评论
刷新评论列表
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
真是水,居然可以这样将int转成str
内存池(version1.1)
智能指针源码
More Effective 的 Reference Counting
从二叉树的递归遍历想到的:利用重载函数,使函数接口更"友好"
又是一题动态规划--经典
看 c++primer 后的一个问题
递归--->计算日期总数
不看书怎么见彩虹?
变量初始化的重要性!
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理