21个挑战题,几杯咖啡的时间,来试试

2024-06-15 15:18

本文主要是介绍21个挑战题,几杯咖啡的时间,来试试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目

挑战:将数字1-13分别放入三个桶中,满足任何桶中任意两个数的差与这两个数不在同一个桶中。
(例如,如果将数字5和7放入一个桶中,那么不能将数字2放入同一个桶中)
下方是解决方案:(文字颜色为白色,选中下一行即可查看)
[[2, 3, 7, 11, 12], [5, 6, 8, 9], [1, 4, 10, 13]]
 或 [[2, 3, 11, 12], [5, 6, 7, 8, 9], [1, 4, 10, 13]]


同学很早以前问的一个题,做了之后就忘了告诉人家。近几天突然想起来,就扒了出来。

用回溯法做的


结果中有很多重复的,所以每种组合只输出一次


/*
挑战:将数字1-13分别放入三个桶中,满足任何桶中任意两个数的差与这两个数不在同一个桶中。
(例如,如果将数字5和7放入一个桶中,那么不能将数字2放入同一个桶中)
下方是解决方案:(文字颜色为白色,选中下一行即可查看)
[[2, 3, 7, 11, 12], [5, 6, 8, 9], [1, 4, 10, 13]]或 [[2, 3, 11, 12], [5, 6, 7, 8, 9], [1, 4, 10, 13]]
*/
#include <iostream>
#include <cstring>using namespace std;int a[13]={1,2,3,4,5,6,7,8,9,10,11,12,13};
int a1[13],a2[13],a3[13];
int n1,n2,n3,count;bool IsCorrect(const int *ax,const int c,const int num)
{int i,j,sub;if(-1==c)return true;for(i=0;i<=c;i++){sub=num-ax[i];for(j=0;j<=c;j++)if(ax[j]==sub)return false;}return true;
}void Fill(int n)
{if(14==n&&1==a1[0]&&2==a2[0]){/*++count;cout<<"Case "<<count<<":"<<endl;*/int tn1,tn2,tn3;tn1=tn2=tn3=0;++count;cout<<"Case "<<count<<":"<<endl;//输出 a1,a2,a3while(tn1<=n1){cout<<a1[tn1++]<<" ";}cout<<endl;while(tn2<=n2){cout<<a2[tn2++]<<" ";}cout<<endl;while(tn3<=n3){cout<<a3[tn3++]<<" ";}cout<<endl;return;}if(IsCorrect(a1,n1,n)){
//      cout<<n<<" a1"<<endl;a1[++n1]=n;Fill(n+1);a1[n1]=0;n1--;}if(IsCorrect(a2,n2,n)){
//      cout<<n<<" a2"<<endl;a2[++n2]=n;Fill(n+1);a2[n2]=0;n2--;}if(IsCorrect(a3,n3,n)){
//      cout<<n<<" a3"<<endl;a3[++n3]=n;Fill(n+1);a3[n3]=0;n3--;}return;
}int main()
{memset(a1,0,sizeof(a1));memset(a2,0,sizeof(a2));memset(a3,0,sizeof(a3));n1=n2=n3=-1;count=0;Fill(1);return 0;
}





这篇关于21个挑战题,几杯咖啡的时间,来试试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1063819

相关文章

问题:第一次世界大战的起止时间是 #其他#学习方法#微信

问题:第一次世界大战的起止时间是 A.1913 ~1918 年 B.1913 ~1918 年 C.1914 ~1918 年 D.1914 ~1919 年 参考答案如图所示

21.手绘Spring IOC运行时序图

1.再谈IOC与 DI IOC(lnversion of Control)控制反转:所谓控制反转,就是把原先我们代码里面需要实现的对象创 建、依赖的代码,反转给容器来帮忙实现。那么必然的我们需要创建一个容器,同时需要一种描述来让 容器知道需要创建的对象与对象的关系。这个描述最具体表现就是我们所看到的配置文件。 DI(Dependency Injection)依赖注入:就是指对象是被动接受依赖类

时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测

时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测 目录 时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测基本介绍程序设计参考资料 基本介绍 MATLAB实现LSTM时间序列未来多步预测-递归预测。LSTM是一种含有LSTM区块(blocks)或其他的一种类神经网络,文献或其他资料中LSTM区块可能被描述成智能网络单元,因为

java中查看函数运行时间和cpu运行时间

android开发调查性能问题中有一个现象,函数的运行时间远低于cpu执行时间,因为函数运行期间线程可能包含等待操作。native层可以查看实际的cpu执行时间和函数执行时间。在java中如何实现? 借助AI得到了答案 import java.lang.management.ManagementFactory;import java.lang.management.Threa

时间服务器中,适用于国内的 NTP 服务器地址,可用于时间同步或 Android 加速 GPS 定位

NTP 是什么?   NTP 是网络时间协议(Network Time Protocol),它用来同步网络设备【如计算机、手机】的时间的协议。 NTP 实现什么目的?   目的很简单,就是为了提供准确时间。因为我们的手表、设备等,经常会时间跑着跑着就有误差,或快或慢的少几秒,时间长了甚至误差过分钟。 NTP 服务器列表 最常见、熟知的就是 www.pool.ntp.org/zo

20170723 做的事 ecdsa的签名验证时间短于bls signature

1 今天在虚拟机 /home/smile/Desktop/20170610/Test//time_ecdsa 文件夹下,找到ecdsa的验证时间是 989.060606μs μs 先 make ,然后run。 再取BLS的签名生成时间: ./run  2  gnuplot 画图,画对比的时间 gnuplot 画图参考教程 http://blog.sciencen

Python几种建表方法运行时间的比较

建立一个表[0,1,2,3.......10n],下面几种方法都能实现,但是运行时间却截然不同哦 import time#方法一def test1(n):list=[]for i in range(n*10):list=list+[i]return list#方法二def test2(n):list=[]for i in range(n*10):list.append(i)#方法三d

【Qt6.3 基础教程 16】 掌握Qt中的时间和日期:QTimer和QDateTime的高效应用

文章目录 前言QTimer:定时任务的强大工具QTimer的基本用法高级特性:单次定时器 QDateTime:处理日期和时间获取当前日期和时间日期和时间的格式化输出日期和时间计算 用例:创建一个倒计时应用结论 前言 在开发桌面应用程序时,处理时间和日期是一个常见且重要的任务。Qt框架提供了强大的工具来处理与时间相关的功能,其中QTimer和QDateTime是最核心的类。本

Linux之时间显示

在linux中使用使用date的方式来显示时间,但是如果想按照自己想要的格式展示,那就需要加上一点参数了 显示当前时间 date 2024年 06月 23日 星期日 23:21:42 CST 显示当前年份 date +%Y 2024 显示当前月份 date +%m 6 显示当前日期 date +%d 23 自定义显示格式 date "+%Y-%m-%d

6月21日训练 (东北林业大学)(个人题解)

前言:   这次训练是大一大二一起参加的训练,总体来说难度是有的,我和队友在比赛时间内就写出了四道题,之后陆陆续续又补了了三道题,还有一道题看了学长题解后感觉有点超出我的能力范围了,就留给以后的自己吧。话不多说,上正文。 正文:   Problem:A 幸运数字: #include <bits/stdc++.h>using namespace std;int sum,ans;in