0
点赞
收藏
分享

微信扫一扫

真是尿了!掉进了一个“盲僧”都能绕过的坑


开心地刷着HDU的一道DP题,写好后提交,WA,擦。。。搞毛啊,,看着解题报告(这份解题报告的答案是对的)敲都错,,,对比下解题报告,,发现我在一个地方犯了错,而这个地方让我纠结了1个多小时才想明白是这么回事。

具体杭电的哪题就不说了

,把问题压缩下吧。

问题:输出一个4*4的矩阵,每个元素都是1,例外是第一个元素要用空格代替,例如输出下面这样

   1 1 1

1 1 1 1

1 1 1 1

1 1 1 1


看了问题后

,哇塞!真简单!马上敲好代码,如下


for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
if (i != 0 && j != 0)
cout << "1";
else
cout << " ";

cout << " ";
}

cout << endl;
}


运行后如下图:

真是尿了!掉进了一个“盲僧”都能绕过的坑_i++

靠!

怎么会这样!!!

是不是电脑中毒??

难道VS中毒了?

都不是,是我脑子秀逗了。

好吧,现在来看一下正确的代码:

for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
if (i == 0 && j == 0)
cout << " ";
else
cout << "1";

cout << " ";
}

cout << endl;
}


输出如下图:

真是尿了!掉进了一个“盲僧”都能绕过的坑_HDU_02

perfect!

来看下正确代码,输出的时候,第一个“1”单独处理变成空格嘛,其他的输出1,对啊,就是这样啊。

我的代码不也是嘛,

,来看看:

if (i != 0 && j != 0)//处理其他
    cout << "1";
else//处理第一个
    cout << " ";

也是这样的啊!!!

OK,想到错在哪里了么?看下错误的代码的输出图就知道了,第一行和第一列都变成空格了。i != 0 && j != 0会把第一行和第一列都忽视,而不仅仅是第一个。

其实这个错误就是一个简单的逻辑错误,我的代码只需改动两个字符就可以了。

把&&改成||即可。

也就是:

for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
if (i != 0 || j != 0)//----------->改动位置
cout << "1";
else
cout << " ";

cout << " ";
}

cout << endl;
}


OK,结束了,心好累

想想自己也真是秀逗到家了。。。。。


写于此,于己,吃一堑长一智;于他,。。。。。你看了应该就不会犯了。





举报

相关推荐

0 条评论