首页 > 其他分享 >11/24

11/24

时间:2023-11-24 22:24:16浏览次数:18  
标签:11 24 int vis 日期 date 100 mm

C++ ">>"表示右移,右移一位(相当于除以2)

简单了解了下dfs算法,在C++中熟练掌握会很方便。可以使用ios::sync_with_stdio(0);cin.tie(0);提高运行效率;

最后附上蓝桥题解源码:

小蓝现在有一个长度为 100 的数组,数组中的每个元素的值都在 0 到 9 的 范围之内。数组中的元素从左至右如下所示: 5 6 8 6 9 1 6 1 2 4 9 1 9 8 2 3 6 4 7 7 5 9 5 0 3 8 7 5 8 1 5 8 6 1 8 3 0 3 7 9 2 7 0 5 8 8 5 7 0 9 9 1 9 4 4 6 8 6 3 3 8 5 1 6 3 4 6 7 0 7 8 2 7 6 8 9 5 6 5 6 1 4 0 1 0 0 9 4 8 0 9 1 2 8 5 0 2 5 3 3
现在他想要从这个数组中寻找一些满足以下条件的子序列:
1. 子序列的长度为 8;
2. 这个子序列可以按照下标顺序组成一个 yyyymmdd 格式的日期,并且要求这个日期是 2023 年中的某一天的日期,例如 20230902,231223。 yyyy 表示年份,mm 表示月份,dd 表示天数,当月份或者天数的长度只有一位时需要一个前导零补充。请你帮小蓝计算下按上述条件一共能找到多少个不同 的 2023 年的日期。对于相同的日期你只需要统计一次即可。

#include<bits/stdc++.h>
using namespace std;
int a[100],ans;
bool vis[20240000];
bool check(int date){
    if(vis[date]) return false;
    vis[date]=1;
    int mm=date/100%100;
    int dd=date%100;
    if(mm<1||12<mm) return false;
    if(mm==1||mm==3||mm==5||mm==7||mm==8||mm==10||mm==12) {
        if(1<=dd&&dd<=31) return true;
    }else if(mm==2)
    {
        if(1<=dd&&dd<=28) return true;
    }
    else if(1<=dd&&dd<=30) return true;
    else return false;
}
void dfs(int x,int pos,int date)
{
    if(x==100) return;
    if(pos==8)
    {
        if(check(date)) ++ans;
        return;
    }
    if((pos==0&&a[x]==2)||
    (pos==1&&a[x]==0)||
    (pos==2&&a[x]==2)||
    (pos==3&&a[x]==3)||
    (pos==4&&0<=a[x]&&a[x]<=1)||
    (pos==5&&0<=a[x]&&a[x]<=9)||
    (pos==6&&0<=a[x]&&a[x]<=3)||
    (pos==7&&0<=a[x]&&a[x]<=9))
    dfs(x+1,pos+1,date*10+a[x]);
    dfs(x+1,pos,date);
 } 

int main()
{
    ios::sync_with_stdio(0);cin.tie(0);
    for(int i=0;i<100;++i)cin>>a[i];
    dfs(0,0,0);
    cout<<ans;
    return 0;
}
/*
1 2 3 4 5 6 7 8 9 0 
*/

 

标签:11,24,int,vis,日期,date,100,mm
From: https://www.cnblogs.com/wangxinyuan1108/p/17854904.html

相关文章

  • 【11月LeetCode组队打卡】Task4--BinarySearchTree
    Review有数值有序树:lch<root<rch递归和迭代遍历不同于普通二叉树搜索BST700.二叉搜索树中的搜索有:返回以存储val节点为根的子树无:NULLAC1:递归参数和返回值:根节点&待寻值节点终止条件:根为空||匹配到val单层逻辑:有序树:从左到右搜索......
  • 2023-11-24
    packageutils;importjava.awt.Component;importjava.awt.Toolkit;importjavax.swing.JFrame;publicclassGUITool{ staticToolkitkit=Toolkit.getDefaultToolkit(); //需要的设置该工具全部性质 publicstaticvoidsetAll(JFrameframe){ center(frame); fram......
  • C++11 多线程并发 互斥量、条件变量和信号量
    互斥量Classesmutex(C++11)providesbasicmutualexclusionfacility(class)timed_mutex(C++11)providesmutualexclusionfacilitywhichimplementslockingwithatimeout(class)recursive_mutex(C++11)providesmutualexclusionfacili......
  • 2023-11-24
    2023-11-24Vector底层结构和源码剖析、基本介绍1.Victor的定义说明publicclassvector<E>extendsAbstractList<E>implementsLIst<E>,RandomAccess,Cloneble,Serializable2.Victor底层也是个对象数组3.Victor是线程同步的,即线程安全4.开发中需要线程同步安全时,考虑使......
  • 11月24日
    在“虚拟聊天室”实例中增加一个新的具体聊天室类和一个新的具体会员类,要求如下:1.新的具体聊天室中发送的图片大小不得超过20M。2.新的具体聊天室中发送的文字长度不得超过100个字符。3.新的具体会员类可以发送图片信息和文本信息。4.新的具体会员类在发送文本信息时,可以......
  • 2023.11.24——每日总结
    学习所花时间(包括上课):9h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习;我了解到的知识点:1.JavaGUI2.会话跟踪技术明日计划:学习......
  • 20231124
    /*time:O(unknown)space:O(n*n)knowledge:树的直径step:dfs*2*/#include<bits/stdc++.h>usingnamespacestd;intn;vector<int>t[105];boolvis[105];ints,len;voiddfs(intx,intd){vis[x]=true;if(len<d){s=x;len......
  • 学习笔记11
    20211301学习笔记11教材知识点总结TCP/IP协议TCP:代表传输控制协议IP:代表互联网协议IPv4:32位IPv6:64位堆栈顶层:应用程序,用于登录远程主机ssh、用于交换电子邮件、用于web页面的http等应用程序需要可靠的数据传输网络中的数据流路径:IP主机和IP地址主......
  • [Luogu] P7911 [CSP-J 2021] 网络连接
    [CSP-J2021]网络连接-洛谷距离CSP2023还有\(**3**\)天题意及思路恶臭大模拟,按照题意模拟即可。有几个代码上的难点:当定义了一个scanf或者sscanf并且有一定的输入规则,那么如果读取到的字符串不符合定义的规则,那读入了几个变量就返回几个变量例如,如下代码定义了一个读......
  • [Luogu] P1164 小A点菜
    题目传送门一道动态规划,\(dp_{i, j}\)表示用前\(i\)个菜品花光\(j\)元的方法总数那么可以推出状态转移方程:\(if(j>a_i)\spacedp_{i,j}=dp_{i-1,j}+dp_{i-1,j-a_{i}}\)如果j比ai大,那么方案数就是不买\(dp_{i − 1, j}\)+买\(dp_{i − 1, j − a_i}\),其中如果买,那么......