n2

C语言I博客作业11

流过昼夜 提交于 2019-12-06 19:35:25
这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 作业 我在这个课程的目标是 了解并在一定程度上掌握新的知识 这个作业在那个具体方面帮助我实现目标 我学习到了函数有关的知识 参考文献 C语言程序设计(第3版), 百度 1.PTA实验作业 1.1 统计某类完全平方数 本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。 函数接口定义: int IsTheNumber ( const int N ); 其中N是用户传入的参数。如果N满足条件,则该函数必须返回1,否则返回0。 裁判测试程序样例: #include <stdio.h> #include <math.h> int IsTheNumber ( const int N ); int main() { int n1, n2, i, cnt; scanf("%d %d", &n1, &n2); cnt = 0; for ( i=n1; i<=n2; i++ ) { if ( IsTheNumber(i) ) cnt++; } printf("cnt = %d\n", cnt); return 0; } /* 你的代码将被嵌在这里 */ 输入样例: 105 500 输出样例: cnt = 6 1.1.1 数据处理 数据表达: 主函数:定义了n1, n2, i,

【题解】LuoGu2015:二叉苹果树

拟墨画扇 提交于 2019-12-06 19:18:02
原题传送门 这应该是树型dp的例题,我竟然才做 现在的水平直接秒杀掉这道题目啦 O ( n ) O(n) O ( n ) 遍历,过程中做 O ( n 2 ) O(n^2) O ( n 2 ) 的背包,就好了, a n s = d p 1 , Q ans=dp_{1,Q} a n s = d p 1 , Q ​ 注意一些小细节 我记得神仙 k b l a c k kblack k b l a c k 讲过 O ( n 2 ) O(n^2) O ( n 2 ) 的做法,但是我忘了,只能 O ( n 3 ) O(n^3) O ( n 3 ) 了 Code: # include <bits/stdc++.h> # define maxn 110 using namespace std ; struct Edge { int to , next , len ; } edge [ maxn << 1 ] ; int num , head [ maxn ] , n , m , size [ maxn ] , dp [ maxn ] [ maxn ] , ans ; inline int read ( ) { int s = 0 , w = 1 ; char c = getchar ( ) ; for ( ; ! isdigit ( c ) ; c = getchar ( ) ) if ( c =

并归排序(数组+链表)

江枫思渺然 提交于 2019-12-06 13:04:39
     并归排序与快速排序相似,靠分治思想突破了排序算法 O(n 2 ) 的瓶颈。   我们看回顾一下几大排序算法的时间、空间复杂度: 排序算法 平均时间复杂度 最坏时间复杂度 空间复杂度 是否稳定 冒泡排序 O(n2)O(n2) O(n2)O(n2) O(1)O(1) 是 选择排序 O(n2)O(n2) O(n2)O(n2) O(1)O(1) 不是 直接插入排序 O(n2)O(n2) O(n2)O(n2) O(1)O(1) 是 归并排序 O(nlogn)O(nlogn) O(nlogn)O(nlogn) O(n)O(n) 是 快速排序 O(nlogn)O(nlogn) O(n2)O(n2) O(logn)O(logn) 不是 堆排序 O(nlogn)O(nlogn) O(nlogn)O(nlogn) O(1)O(1) 不是 希尔排序 O(nlogn)O(nlogn) O(ns)O(ns) O(1)O(1) 不是 计数排序 O(n+k)O(n+k) O(n+k)O(n+k) O(n+k)O(n+k) 是 基数排序 O(N∗M)O(N∗M) O(N∗M)O(N∗M) O(M)O(M) 是   早期的排序算法总是免不了元素间的一一比较,因此时间复杂度很难突破 O(n 2 ) 。而并归排序采用分治的思想将问题的规模缩小,使用小问题的解来解决大问题,并由此突破了 n 2 的诅咒。  

算法 - 链表 - 判断一个链表是否为回文结构

你离开我真会死。 提交于 2019-12-05 22:59:46
问题三 判断一个链表是否为回文结构 给定一个链表的头节点 head,请判断该链表是否为回文结构。 1->2->1,返回 true。 1->2->2->1,返回 true。 15->6->15,返回 true。 1->2->3,返回 false。 思路 第一次遍历,使用一个栈结构存储节点,第二次遍历,与弹出栈存储的值比较,相同为 true 不同为 false。 可以使用快慢指针得到链表的对称轴的下一个节点,然后将值压栈,然后重头开始遍历,省下一半的栈空间,但是在计算空间复杂度时还是会忽略不计系数。 // need n extra space public static boolean isPalindromeOne(Node head) { if (head == null || head.next == null) return true; Stack<Node> stack = new Stack<>(); Node cur = head; while (cur != null) { stack.push(cur); cur = cur.next; } while (head != null) { if (head.val != stack.pop().val) { return false; } head = head.next; } return true; } //

《信息安全导论》第八周学习总结

那年仲夏 提交于 2019-12-05 12:29:55
《信息安全导论》第八周学习总结 课上 在本周的学习中,我了解了各种初级、高级的程序语言,了解到了它们的程序泛式,知道了其分为命令式(面向对象、面向过程)、声明式(函数式、逻辑式)。 了解了编译器、解释器。除此之外,还了解了高级程序语言的一些基本结构,如输入/输出结构、控制结构、嵌套逻辑。 另外,还学习了面向对象语言的功能性:封装、继承、多态。 课下 在本周,老师所布置的作业难度提高了一大截。因此,我并没有完全意义上做完老师的作业。但也因此学习到了许多,也了解到了自己知识还比较浅薄。 四则运算程序 在该作业的完成中,我遇到了极大的困难。首先,在参数传递上,我就云里雾里,上网查了很久,也只是一知半解。 在写代码时,可能是学习python的时日还短,以自己的能力只能实现一部分功能,很多要求都无法实现。 之后,便向同学借了一份代码进行参考和学习。尽管如此,这次艰难的作业还是对我有很大的帮助。 以下是自己写的代码 import sys import os def fs(): import random from fractions import Fraction fz = random.randint(1,10) fm = random.randint(1,10) if fm == 0: b = fz else: b = Fraction(fz,fm) return b def szys()

随机生成四则运算(小学生要能做)

允我心安 提交于 2019-12-05 11:18:21
要小学生能做的四则运算,要求十以内所以我在前两个运算子程序中,放入了一个while循环,将得到的result进行判断,大于十的式子将不会被输出,而是再次执行程序,直到结果小于10时,输出计算式以及答案 import fractions from fractions import Fraction import random def integer(): d=0 result = 100 while True: if result>=10: symbol = ['+', '-', '×', '÷'] x = random.randint(0, 3) n1 = random.randint(1, 10) n2 = random.randint(1, 10) if x == 0: result = n1 + n2 elif x == 1: n1, n2 = max(n1, n2), min(n1, n2) result = n1 - n2 elif x == 2: result = n1 * n2 elif x == 3: n1, n2 = max(n1, n2), min(n1, n2) while n1 % n2 != 0: n1 = random.randint(1, 10) n2 = random.randint(1, 10) n1, n2 = max(n1, n2), min

numpy基本使用

我的梦境 提交于 2019-12-05 11:01:29
轴 axis 正常情况 0 行, 1 列 聚合函数 0列, 1 行 import numpy as np np.__version__ #查看numpy版本 一.创建ndarray 1.使用np.array()由python list创建 l = [1,4,2,5,6] n = np.array(l) 注意: numpy默认ndarray的所有元素的类型是相同的 如果传进来的列表中包含不同的类型,则统一为同一类型,优先级:str>float>int 2. 使用np的routines函数创建 1) np.ones(shape, dtype=None, order="C") 用来产生全是1的ndarray shape是用来指定ndarray的形状 dtype是数字的类型 例如: np.ones(shape=(7,7), dtype=np.int8) 2) np.zeros(shape, dtype=float, order='C') 用来产生全是0的ndarray 例如: np.zeros(shape=(7,7), dtype=np.float32) 3) np.full(shape, fill_value, dtype=None, order='C') 按照指定数字产生ndarray 例如: np.full(shape=(8,8), fill_value=8.) 4) np.eye

leetcode1143

空扰寡人 提交于 2019-12-05 10:00:47
经典的动态规划题目:最长公共子序列(Longest Common Subsequence),使用二维数组记录,双层循环。 1 class Solution: 2 def longestCommonSubsequence(self, text1: str, text2: str) -> int: 3 n1,n2 = len(text1),len(text2) 4 if n1 == 0 or n2 == 0: 5 return 0 6 dp = [[0 for _ in range(n2+1)]for _ in range(n1+1)] 7 for i in range(1,n1+1): 8 for j in range(1,n2+1): 9 if text1[i-1] == text2[j-1]: 10 dp[i][j] = dp[i-1][j-1] + 1 11 else: 12 dp[i][j] = max(dp[i][j-1],dp[i-1][j]) 13 return dp[n1][n2] 来源: https://www.cnblogs.com/asenyang/p/11920710.html

明解C语言 入门篇 第十章答案

浪子不回头ぞ 提交于 2019-12-05 09:13:02
练习10-1 #include <stdio.h> void adjust_point(int*n) { if (*n > 100) *n = 100; if (*n < 0) *n = 0; } int main() { int x; printf("请输入一个数:"); scanf("%d", &x); adjust_point(&x); printf("修改后的值是%d",x); } 练习10-2 void decrement_date(int* y, int* m, int* d) { *d -= 1; if (*d == 0) { *m -= 1; if (*m == 1 || *m == 3 || *m == 5 || *m == 7 || *m == 10 || *m == 8 ||* m == 0) { *d = 31; } if (*m == 2) { *d = 28; if (*y % 4 == 0) { *d = 29; } } else *d = 30; if (*m == 0) { *m = 12; *y -= 1; } } } void increment_date(int* y, int* m, int* d) { *d += 1; if ((*m == 1 || *m == 3 || *m == 5 || *m == 7 || *m == 10 ||

Python运算符

大城市里の小女人 提交于 2019-12-05 06:36:29
本文链接: https://www.cnblogs.com/zyuanlbj/p/11910980.html 算术运算符 +   -   *   /   %   **   // 示例: a=9 b=2 result = a * b print('乘法运算:',result) result = a / b print('除法运算:',result) b=3 result = a ** b # b=2 8*8=64 8*8*8 =512 a的b次幂 print('乘法运算:',result) b=2 result = a // b # 整除 9/2 =4.5 取整:4 print('除法运算:',result) result = a%b # 9%2= 1 print('取余数运算:',result) 赋值运算符 =   -=   +=   *=   /= 赋值运算符左边必须是变量。 从右向左算。 没有赋值表达式。 所有赋值运算符优先级相同,赋值运算符优先级非常低,仅高于成员运算符和身份运算符、逻辑运算符。 注意在复合赋值中。 示例: # 1. = name = 'admin' # 将'admin'的值赋给 变量name name1 = name print(id(name), name) print(id(name1), name1) name2 = name print(id