IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> Acwing 蓝桥杯试题 笔记 -> 正文阅读

[数据结构与算法]Acwing 蓝桥杯试题 笔记

本篇为笔记非题解 描述较为简略?

?全排列 itertools中的permutations 做题时要想清楚是排列还是组合

不论是列表还是字符串 调用permutations or combinations 返回每个元素以元组形式存在

import itertools

s=[1,2,3,4,5]
for i in itertools.permutations(s,5):
    print(i)
#输出
#(1, 2, 3, 4, 5)
#(1, 2, 3, 5, 4)
#(1, 2, 4, 3, 5)
#(1, 2, 4, 5, 3)....

a="12345"
for i in itertools.permutations(a,5):
    print(i)
#输出
#('5', '3', '4', '1', '2')
#('5', '3', '4', '2', '1')
#('5', '4', '1', '2', '3')
#('5', '4', '1', '3', '2')

唯一区别在于 元素的组成部分是数字还是字符串

permutations(combinaitons)(序列,生成元素长度) 如果生成元素长度为序列长度,可以省略。

如何将一个序列作为数字输出?

如果生成的序列都是数字 可以通过循环s=s*10+a[i] 实现

如果生成的序列都是字符串 可以通过int(''.join(序列))

本题关键点在于 通过分割序列 ,切分得到a,b,c

在取分割点的时候 我们只关心其个位上的数字?

这道题的题解思路来源:蓝桥杯-带分数-python_晓宜的博客-CSDN博客在ACWing已经AC,蓝桥杯评判系统有一点问题据说导致超时。

一开始看到这题,没想法。感觉这是一道物理题撞来撞去。

后来看了别人的分析,懂了其实有时候没必要把问题想的太复杂,转换一下就简单了。

感冒A对撞上健康B 两者反向跑 等效于各自继续朝着原来的方向向前跑只不过B也感冒了?

所以无论怎么撞 都可以把每个蚂蚁看作单向运动 那么必然都能跑到端点

如果和A面对面的有n个蚂蚁,那么这n个蚂蚁势必会影响到跟在A屁股后的m个蚂蚁

那么就一共有m+n+1个蚂蚁感冒了 ,其他的蚂蚁感冒不着。

所以当觉得问题过于复杂了,很有可能是自己想得太复杂了,换一个想法,就好了。

小郑AC代码:

#能感染 只能是反向跑
n=int(input())
l=list(map(int,input().split()))
right,left=0,0
p=l[0]
for i in range(1,len(l)):
    if p>0:#第一个蚂蚁向右走:如果结束循环right=0那么输出1
        if abs(l[i])>abs(p) and l[i]*p<0:
            right+=1#右侧蚂蚁感染数目
        elif abs(l[i])<abs(p) and l[i]*p>0:
            left+=1#左侧蚂蚁感染数目
        else:
            pass
    else:#第一个蚂蚁向左走:如果结束循环left=0那么输出1
        if abs(l[i])>abs(p) and l[i]*p>0:
            right+=1#
        elif abs(l[i])<abs(p) and l[i]*p<0:
            left+=1
        else:
            pass
print(right+left+1) if right*left!=0 else print(1)

其次要注意严谨,第一个蚂蚁的朝向也会影响结果,不能草率下结论。

?埃筛法板子:

max=int(input())
prime=[0 for i in range(max+1)]

def generate_prime():
    cnt=0#素数个数
    is_prime=[1 for i in range(max+1)]#1标记素数,0标记非素数
    is_prime[0]=is_prime[1]=0#0,1不是素数
    for i in range(2,max+1):
        if is_prime[i]==1:#是素数
            cnt+=1
            prime[cnt]=i
            j=i
            while j<=max:
                is_prime[j]=0
                j+=i#把i的倍数标记为非素数
    return cnt

cnt=generate_prime()
for i in range(1,cnt+1):a
    print(prime[i],end=' ')
    
   
#输出0~max的素数一般步骤
#两个容器 prime,is_prime prime[i]代表第i个素数,is_prime[i]代表第i是否为素数
#0还是1?
#一个计数器cnt 关联到prime下标,初始化为0
#遍历2到max 如果i是素数,1:那么通过cnt计入prime
#2:从[i,max]的范围内把i的倍数is_prime标记为非素数
#总结:两个容器  一个计数器

树的直径:某乎链接【朝夕的ACM笔记】树上问题-树的直径 - 知乎 (zhihu.com)?

更推荐去看下面这个姐姐讲解,很细致,慢慢地讲,对新手很友好

树的直径_哔哩哔哩_bilibili

树的直径可以来解决这道题? >>1207. 大臣的旅费 - AcWing题库

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 15:50:37  更:2022-02-28 15:50:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 15:41:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码