最新消息:380元/半年,推荐全网最具性价比的一站式编程学习平台码丁实验室

niop-基础题库 “说谎”

C++ 少儿编程 3303浏览 0评论

友情提示:380元/半年,儿童学编程,就上码丁实验室

题目描述:

小明以自己的人格担保他最后一个回答一定是正确的,但并不保证其它的回答是对的。

每个数为小明对上一个的回答,若为0表示说上句话是错的,若为1表示说上句话是对的。根据他四次的回答,请输出他原来的四句话的对与错。

输入格式:

一行四个数,表示他回答的每次的对错值。

输出格式:

一行四个数,为小明四句话的对错,对输出1、错输出0。

样例输入:

1 0 0 0

样例输出:

0 1 0 1

提示:

样例说明:

最后第4个回答肯定是对的,所以直接输出1。

因为第4个回答是对的,第4个回答的值是0,所以第三个说谎了,输出0。

因为第3次说谎了,第3个回答的是0,所以第2次是对的,输出1。

因为第2次没有说谎,第2个回答是0,所以第一次说谎了,输出0。

最后倒着输出。

时间限制:1000ms
空间限制:256MByte

 

解题:

把小明每次回答的内容放在数组ans[],把每次回答正确与否放在数组res[],分析题意,我们可以得出以下这张表格:

“ans[i]” -  本次回答内容 0 0 1 1
“res[i]” – 本次回答是否正确 0 1 0 1
“ans[i-1]” – 上次回答是否正确 1 0 0 1

 

代码:

#include<bits/stdc++.h>
using namespace std;int main()
{
  bool ans[4], res[4];
  for(int i=0; i<=3; i++) cin>>ans[i];  //把小明每次回答的内容放在数组 a 
  res[3] = 1;  //最后一次回答一定是正确的 
  for(int i=3; i>=1; i--){
    if(res[i]==ans[i]) res[i-1]=1;   
    else res[i-1]=0;
  }  //见表格  for(int i=0; i<=3; i++) cout<<res[i]<<' ';
  return 0;
}

 

您必须 登录 才能发表评论!