一个比较有趣的题:推算今天星期几

题目:有一天你忘记了今天是星期几,你找来了八个人,让他们每人说两句话,第一句是星期几,另一句今天不是星期几,两句中一句真,一句假,可能第一句为真,也可能第二句为真。最后你确定今天是星期几,并输出。(输入描述,8行,每行是星期几的阿拉伯数字。输出描述一个数字,表示星期几)

输入:[[1,2],[2,6],[3,4],[5,1],[7,7],[1,5],[1,4],[4,2]]

输出:7

说实话,第一眼看到这个题就感觉有问题,假如我们极端的思考这个问题,八个都回答[[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2]]

我们如何推算呢?还有3,4,5,6,7排除不了。所以题目还是有一定的问题,但是这里是让我们编写程序,所以要求不要那么严格,主要的就是判断,在推算。

首先来判断:

假如一个人的答案[1,2];假如今天为x,根据题目我们可以做出判断:

如果x == 1返回true;那么x != 2返回false。

如果x == 1返回false;那么x != 2返回true。

根据上边判断写出计算机能够运行的语言(这里我使用JS,判断都一样)

 

((x == 1) == true)&&((x != 2) == false)||((x == 1) == false)&&((x != 2) == true)

 

简化判断:

 

(x == 1)&&(x == 2)||(x != 1)&&(x != 2)

条件总结出来,现在就是将每一个人的答案进行判断:

 

 

function printDate(arr) {
        //param x ==>假如今天周几,用 x 去推算八个人的答案,num ==>计数器,x满足八个人的答案,则输出x
        var x,num;
        for(x = 1;x < 8;x++){//1 -- 7对每一天进行推算
            num = 0;
            for(var j = 0;j < 8; j++){
                //对每一天进行判断
                if(((x == arr[j][0])&&(x == arr[j][1]) || (x != arr[j][0])&&(x != arr[j][1]))){
                    num++;
                    //如果八个人都满足,输出x,并跳出本循环
                    if(num == 8){
                        console.log(x);
                        break;
                    }
                }
            }
        }
    }
    //八个人的答案组成的数组
    var arr1 = [[1,2],[2,6],[3,4],[5,1],[7,7],[1,5],[1,4],[4,2]];
    var arr2 = [[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2],[1,2]];
    printDate(arr1);//7
    printDate(arr2);//3,4,5,6,7

 

 

 

从arr2可以看出,该判断对3,4,5,6,7不能再排除。

其实最主要的就是通过题目,提炼出判断条件。

其他

[我的博客,欢迎交流!](http://rattenking.gitee.io/stone/index.html)

[我的CSDN博客,欢迎交流!](https://blog.csdn.net/m0_38082783)

[微信小程序专栏](https://blog.csdn.net/column/details/18335.html)

[前端笔记专栏](https://blog.csdn.net/column/details/18321.html)

[微信小程序实现部分高德地图功能的DEMO下载](http://download.csdn.net/download/m0_38082783/10244082)

[微信小程序实现MUI的部分效果的DEMO下载](http://download.csdn.net/download/m0_38082783/10196944)

[微信小程序实现MUI的GIT项目地址](https://github.com/Rattenking/WXTUI-DEMO)

[微信小程序实例列表](http://blog.csdn.net/m0_38082783/article/details/78853722)

[前端笔记列表](http://blog.csdn.net/m0_38082783/article/details/79208205)

[游戏列表](http://blog.csdn.net/m0_38082783/article/details/79035621)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
\u8fd9\u4e2a\u9898\u53ef\u4ee5\u7528Java\u4e2d\u7684\u65f6\u95f4\u51fd\u6570\u6765\u89e3\u51b3\uff0c\u5982\u4e0b\u662f\u4e00\u4e2a\u53c2\u8003\u5b50\u5b57\u7b26\u4e32\uff1a ``` import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class Main { public static void main(String[] args) { // 定义日期格式 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); // 输入年份和日期 int year = 2023; int dayOfYear = 61; // 获取Calendar对象并设置日期 Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.YEAR, year); calendar.set(Calendar.DAY_OF_YEAR, dayOfYear); // 将日期格式化 Date date = calendar.getTime(); String dateStr = format.format(date); // 获取星期几 String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"}; int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1; String weekDayStr = weekDays[dayOfWeek]; // 输出结果 System.out.println(year + "年第" + dayOfYear + "天是" + weekDayStr + ", " + dateStr); } } ``` \u8fd9\u4e2a\u7a0b\u5e8f\u53ef\u4ee5\u8ba9\u7528\u6237\u8f93\u5165\u5e74\u4efd\u548c\u5e74\u4efd\u7684\u7b2c\u51e0\u5929\uff0c\u7136\u540e\u4f7f\u7528Java\u7684\u65f6\u95f4\u51fd\u6570\u6765\u8ba1\u7b97\u8fd9\u4e2a\u65e5\u671f\u7684\u65e5\u671f\u5bf9\u5e94\u7684\u661f\u671f\u548c\u65e5\u671f\u4e3a\u4e00\u4e2a\u5b57\u7b26\u4e32\u3002\u5f53\u7136\uff0c\u8fd9\u4e2a\u7a0b\u5e8f\u53ef\u80fd\u4f1a\u5b58\u5728\u4e00\u4e9b\u5dee\u8ddd\uff0c\u5982\u7ed9\u7684\u65e5\u671f\u4e0d\u5408\u6cd5\u3001\u5e74\u4efd\u8f93\u5165\u9519\u8bef\u7b49\uff0c\u6240\u4ee5\u4f60\u53ef\u4ee5\u6839\u636e\u9700\u6c42\u4fee\u6539\u7a0b\u5e8f\u6216\u63d0\u4ea4\u9519\u8bef\u6d88\u606f\u3002

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rattenking

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值