精华内容
下载资源
问答
  • 判断输入的正整数是不是回文,回文是指将一个正整数从左往右排列和从右往左排列值一样的(不用切片的写法) def main(): num = int(input('请输入一个正整数: ')) temp = num num2 = 0 while temp &amp...

    判断输入的正整数是不是回文数,回文数是指将一个正整数从左往右排列和从右往左排列值一样的数(不用切片的写法)

    def main():
        num = int(input('请输入一个正整数: '))
        temp = num
        num2 = 0
        while temp > 0:
            num2 *= 10
            num2 += temp % 10
            temp //= 10
        if num == num2:
            print('%d是回文数' % num)
        else:
            print('%d不是回文数' % num)
    
    if __name__ == '__main__':
        main()
    展开全文
  • 不管在什么地方,什么时候,学习是快速提升自己的能力的一种体现!!!!!!!!!!...最近一段时间学习了廖雪峰老师学的Python学习资料,给... 回是指从左向读和从向左读都是一样的,例如 12321 , 909 。请利用 filter()

    不管在什么地方,什么时候,学习是快速提升自己的能力的一种体现!!!!!!!!!!!

    最近一段时间学习了廖雪峰老师学的Python学习资料,给自己的帮助很大,同时也学到的了很多,今天做了一道练习题,对于Python是小白的我来说能够靠自己的思考写出来也觉得是挺高兴的!微笑


    练习题:

      回数是指从左向右读和从右向左读都是一样的数,例如 12321 , 909 。请利用 filter() 滤掉非回数:



    方案一:
    def is_palindrome(n):
        nn = str(n) #转成字符串
        return nn == nn[::-1] #反转字符串并对比原字符串返回true/false
    print list(filter(is_palindrome,range(1,1000)))
    
    方案二:
    print list(filter(lambda n : str(n)==str(n)[::-1],range(1,1000))) #str(n)同上
    
    
    
    输出: [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 55, 66, 77, 88, 99, 101, 111, 121, 131, 141, 151, 161, 171, 181, 191, 202, 212, 222, 232, 242, 252, 262, 272, 282, 292, 303, 313, 323, 333, 343, 353, 363, 373, 383, 393, 404, 414, 424, 434, 444, 454, 464, 474, 484, 494, 505, 515, 525, 535, 545, 555, 565, 575, 585, 595, 606, 616, 626, 636, 646, 656, 666, 676, 686, 696, 707, 717, 727, 737, 747, 757, 767, 777, 787, 797, 808, 818, 828, 838, 848, 858, 868, 878, 888, 898, 909, 919, 929, 939, 949, 959, 969, 979, 989, 999]  


    如果此文章有什么不对的地方请路过的大神指出,以免误人子弟


    尊重原创,如要转载请注明出处
    展开全文
  • 算法十六:数字三角形

    千次阅读 2018-07-03 14:11:39
    时间限制:2 sec 空间限制:256 MB 问题描述 给定一个高度为 n 的“数字三角形”,其中第 i 行(1&...即如果你在 (i,j)(表示你在第i行从左往右数第j个数上,下同),你可以选择移动到 (...

    时间限制:2 sec

    空间限制:256 MB

    问题描述

    给定一个高度为 n 的“数字三角形”,其中第 i 行(1<=i<=n)有 i 个数。(例子如下图所示)

    初始时,你站在“数字三角形”的顶部,即第一行的唯一一个数上。每次移动,你可以选择移动到当前位置正下方或者当前位置右下方的位置上。即如果你在 (i,j)(表示你在第i行从左往右数第j个数上,下同),你可以选择移动到 (i+1,j) 或 (i+1,j+1)。

    你想让你经过的所有位置(包括起点和终点)的数字总和最大。求这个最大值。

    输入格式

    第一行一个正整数 n,表示数字三角形的大小。

    第 2 行到第 n+1 行,第 i+1 行为 i 个用空格隔开的非负整数,描述数字三角形的第 i 行。

    输出格式

    一行一个整数,表示经过路径上数的最大总和。

    样例输入

    4

    1

    2  3

    4  5  6

    7  8  9  10

    样例输出

    20

    样例解释

    不停地向右下走即可。

    提示

    [如果我们使用搜索算法,我们会在搜索时记录哪些信息呢?]

    [当前到达的点的坐标、当前经过路径上数的总和!]

    [总和显然是越大越好!]

    [于是可以设计出状态:dp[i][j] 表示走到坐标为 (i,j) 的点时的最大总和。]

    [很容易就可以设计出状态转移方程啦!]

     

     

    一. 伪代码

    二. 具体实现(C++)

    #include <bits/stdc++.h>
    using namespace std;
    // ================= 代码实现开始 =================
    //dp:用于动态规划的数组,d[i][j]表示要走到第i行第j列能得到最大数字总和
    vector<vector<int>> dp;
    // 本函数计算答案(最大经过位置数字总和)
    // n:描述数字三角形大小,意义同题目描述
    // a:描述整个数字三角形,第 i 行的第 j 个数存放在 a[i][j]
    // 中(你需要特别注意的是,所有下标均从 1 开始,也就是说下标为 0 的位置将存放无效信息)
    // 返回值:最大经过位置数字总和

    int getAnswer(int n, vector<vector<int>> a) {
        dp.resize(n+1);
        for(int i=0; i<=n; ++i)
            dp[i].resize(i+2);
        for(int i = 1; i <= n; ++i)
            for(int j = 1; j<=i; ++j)
                dp[i][j] = max(dp[i-1][j-1],dp[i-1][j])+a[i][j];//用左上角和正上方的dp值更新
        int ans = 0;
        for(int i=1; i<=n; ++i)
            ans = max(ans, dp[n][i]);//求最大的数字之和
        return ans;
    }
    // ================= 代码实现结束 =================
     

     

    展开全文
  • 海明码问题

    千次阅读 2018-07-17 22:52:44
    从理论上讲,海明码校验位可以放在任何位置,但习惯上校验位被从左到安排在1、2、4、8、...的位置上。原始信息则从左至填入剩下的位置。如图1所示,校验位处于B1、B2、B4、B8位,剩下位为信息位,信息位依从左至...

    海明码是一种多重奇偶检错系统,它具有检错和纠错的功能。海明码中的全部传输码字是由原来的信息和附加的奇偶校验位组成的。每一个这种奇偶校验位和信息位被编在传输码字的特定位置上。这种系统组合方式能找出错误出现的位置,无论是原有信息位,还是附加校验位。

    设海明码校验位为k,信息位为m,则它们之间的关系应满足m+k+1≤2的k次方。

    下面以原始信息101101为例,讲解海明码的推导与校验过程。

    (1)确定海明码校验位长
    m是信息位长,则m=6 。根据上述关系式m+k+1≤2的k次方,得到7+k≤2的k次方。解得最小k为4,即校验位为4。信息位加校验位总长度为10位。

    (2)推导海明码

    1.填写原始信息。

    从理论上讲,海明码校验位可以放在任何位置,但习惯上校验位被从左到右安排在1、2、4、8、...的位置上。原始信息则从左至右填入剩下的位置。如图1所示,校验位处于B1、B2、B4、B8位,剩下位为信息位,信息位依从左至右的顺序先行填写完毕。

    图1 填入原始信息位

    2.计算校验位。

    依据公式得到校验位:

    P1=B3⊕B5⊕B7⊕B9=1⊕0⊕1⊕0=0 P2=B3⊕B6⊕B7⊕B10=1⊕1⊕1⊕1=0 P3=B5⊕B6⊕B7=0⊕1⊕1=0 P4=B9⊕B10=1⊕1=0

    注:⊕表示异或运算。
    这个公式常用,但是死记硬背很困难,要换个方式去理解记忆。
    把除去1、2、4、8(校验位位置值编号)之外的3、5、6、7、9、10这些值转换为二进制位,如表1所示。


    将所有信息编号的二进制的第1位为1的Bi进行“异或”操作,结果填入P1。即上述的结果P1=B3⊕B5⊕B7⊕B9=1⊕0⊕1⊕0=0;

    同理,将所有信息编号的二进制的第2位为1的Bi进行“异或”操作,结果填入P2。即上述结果P2=B3⊕B6⊕B7⊕B10=1⊕1⊕1⊕1=0;

    以此类推,将所有信息编号的二进制的第3位为1的Bi进行“异或”操作,结果填入P3;将所有信息编号的二进制的第4位为1的Bi进行“异或”操作,结果填入P4。

    将计算好的结果,填入校验位后得到图2。

    图2 加入校验码后的信息

    (3).校验

    将所有信息位位置编号1~10的值转换为二进制位,如表2所示。

    表2 十进制与二进制转换表

    将所有信息编号的二进制的第1位为1的Bi进行“异或”操作,得到X1;
    将所有信息编号的二进制的第2位为1的Bi进行“异或”操作,得到X2;
    将所有信息编号的二进制的第3位为1的Bi进行“异或”操作,得到X4;
    将所有信息编号的二进制的第4位为1的Bi进行“异或”操作,得到X8。
    即公式:

    X1=B1⊕B3⊕B5⊕B7⊕B9 X2=B2⊕B3⊕B6⊕B7⊕B10 X4=B4⊕B5⊕B6⊕B7 X8=B8⊕B9⊕B10

    得到一个形式为X8X4X2X1的二进制,转换为十进制,结果为0,则无错;结果非0(假设结果为Y),则错误发生在第Y位。

    假设起始端发送加了上述校验码信息之后(即0010011101),目的端收到的信息为0010111101,如图3所示。

    图3 接收信息

    依据上一个公式,得到:

    X1=B1⊕B3⊕B5⊕B7⊕B9=0⊕1⊕1⊕1⊕0=1 X2=B2⊕B3⊕B6⊕B7⊕B10=0⊕1⊕1⊕1⊕1=0 X4=B4⊕B5⊕B6⊕B7=0⊕1⊕1⊕1=1 X8=B8⊕B9⊕B10=1⊕0⊕1=0

    则将X8X4X2X1=0101的二进制转换为十进制,结果为5,非0,错误,而且错误发生在第5位。

    展开全文
  • const int buttonPin = 3; // 定义按键输入引脚 int buttonState = 0; //初始化按键值 void setup() { for (int i = 8; i < 14; i++) { pinMode(i, OUTPUT); //配置引脚为输出模式 ... pinMode(buttonPin, INPUT);...
  • /*一个如果从左到和从到左读, 数字是相同的,则称这个数字为回文, 比如898、1221、15651都是回文。 求:既是回文又是质数的5位十进制有多少个? 要求:10000<x<99999 回文判断和质数判断都...
  • 回文是指正序(从左向)和倒序(从向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向读, 为 -121 。 从向左读, 为 121- 。因此它不是一...
  • 题目: 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向移动一步。...思路:因为机器人每次只能向下或者向移动一步,所以机器人在走到下角那...
  • 思路,只要前面的为偶数,当前的为奇数,那么就一直交换位置到最前面的奇数后面,这个指针为less,时间复杂度为O(N),不过一直从后前交换,交换次数较多,但是这种方法没有使用额外空间。 贴上代码: ...
  • 这样的矩阵可以使用一个二维数组存储,知道了矩阵的特点,选取一个元素时可以将矩阵...从特殊位置的点下手这个问题就变得简单了,上和左下这两个点拿来比较要找的元素就很好处理,这里采用取上元素的方式(两种思想
  • 读入一个整数,判断该整数是否回文(回文是指从左往右读以及从右往左读的结果相同的)。 #include  using namespace std;  void main()  {  int i,x,y,r;  y=0;  cout"请输入 "  cin>>x; ...
  • 编写实验学习数码管动态显示,让8只数码管从左往右显示1,2,3,4,,,8 程序: #include <reg51.h> unsigned char led[]={0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80};//0-9的字型码 unsigned char segment[]= ...
  • 题目一:一个n*n 的方格,要从左上角走到右下角,一次只能往右或往下走一步,求算法得出所有走动的方法。 分析:对于第(i,j)个格子,只有向右走一步到达或者向左走一步到达,dp(i,j) = d(i-1,j)+dp(i,j)。边界为...
  • 在实际项目中,需要我们按照自上而下,从左往右的顺序为图斑编号,并且多数时候序号位数是确定的,针对这个问题我总结了一个自认为还算简便的方法。下面是具体的方法步骤: 1、计算Xmin与Ymax。利用坐标进行排序,...
  • x=10,y=10,z=10 答案:A Pytho能支持序列解包赋值,但是变量的个数必须与序列的元素个一致,否则会报错 B:赋值对象是xyz C:序列解包赋值,变量的个数必须与序列的元素个一致,否则会报错 D:分号;...
  • 进制转换:二进制、八进制、十六进制、十进制之间的转换 不同进制之间的转换在编程中经常会用到,尤其是C语言。 将二进制、八进制、十六进制转换为...对于小数部分,恰好相反,要从左往右看,第j位的位权为N-j。 ...
  • 快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。...快速排序是对冒泡排序的改进,它使用分治法的思想,每次循环根据指定的基准,将...
  • SPSS篇—回归分析

    万次阅读 多人点赞 2019-08-20 09:29:06
    最后,我们既然得出了我们的回归方程,我们也就可以对12月份的商品销售情况作出相应的预测,这个就只需要回归方程里面代数就可以计算出来了。 到这里,我们本次SPSS Statistics的回归分析就全部做完了,今天也...
  • 问题

    2020-05-27 10:13:24
    设有n个人站成一排,从左向的编号分别为1~n, 现在从左向“1,2, 1,2,1,2….”,到”1”的人出列,到”2”的人站到队伍最右边。报过 程反复进行,直到n个人都出列为止。问:报出队次序刚好为从 1 ...
  • def is_palindrome(n): return str(n)[:] == str(n)[::-1]
  • 回文是指正序(从左向)和倒序(从向左)读都是一样的整数。 示例 1: 输入: 121,输出: true 示例2: 输入: -121,输出: false 解释: 从左向读, 为 -121 。 从向左读, 为 121- 。因此它不是一个回文...
  • 举个例子,从左往右0-320是openmv的像素点位置,openmv发送过来位置,当从右往左扫到了,那就在165的位置要开炮!!!,这样才差不多是中心线打出去!!从左往右扫到了,同理,接收到155的位置开炮~ 发挥三:触摸屏...
  • //输出十进制转换为二进制的 cout 运行结果为: 二进制转换十进制 将二进制从右往左从零次幂开始乘以二进制并求和 二进制转换为十进制 C++实现二进制转换十进制 C++主函数为: #include #include #include #...
  • 问题:从一列中筛除尽可能少的使得从左往右看,这些是从小到大再从大到小的(网易)。 解法:这是双端 LIS 问题,用 DP 的思想可解,目标规划函数 max{ b[i] + c[i] }, 其中 b[i] 为从左到右, 0 ~ i 个...
  • 请编写一个函数(允许增加子函数),计算nxm的棋盘格子(n为横向的格子,m为竖向的格子)沿着各自边缘线从左上角走到右下角,总共有多少种走法,要求不能走回头路,即:只能往右和往下走,不能往左和往上走。...
  • //数字格式化,从右往左每隔三位加逗号 function formatNumber(str) {  if(str.length  return str;  } else {  return formatNumber(str.substr(0,str.length-3))+','+str.substr(str.length-3);  
  • 下输入/插入题目---->>>>>>>>>>>>>>>>>>:/* 记得加 / / 如果一个数字从左边读和从右边读一样,那么这个数字就是一个回文,例如32123就是一个回文。 ...
  • 解释: 从左向读, 为 -121 。 从向左读, 为 121- 。因此它不是一个回文。示例 3:输入: 10 输出: false 解释: 从向左读, 为 01 。因此它不是一个回文。第一种:class Solution { public boolean ...
  • } 运行结果: 十六进制转换十进制 将十六进制从右往左从零次幂开始乘以十六进制并求和,这里需要对字母表示的数字进行转换 十六进制转换十进制 C++实现十六进制转换十进制 主函数main.cpp为: #include #include ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 336,291
精华内容 134,516
关键字:

往右数