max函数

Lua学习_Three----Lua函数

让人想犯罪 __ 提交于 2019-12-02 10:29:48
Lua函数 函数用途 完成指定任务,这种情况下函数作为调用语句使用 计算并返回值,这种情况下函数作为赋值语句的表达时使用 函数定义 [ function_type ] function function_name(v1,v2) function_body [return value] end function_type 选定函数为全局函数和局部函数 function_name 函数名 function_body 函数体 函数返回值,Lua可返回多个返回值,值用 , 隔开 参数可以是函数 参数可用 … 表示函数有可变的参数 Lua将函数的参数放在arg的表中, #arg表示传入参数的个数(字符串表示) function ave(...) count = 0 local arg = {...} for i,v in ipairs(arg) do count = count + v end print("共传入" ..#arg.."个数") return count/#arg end print("平均值为",ave(18,9,5,3,7,4,6,1)) -- 返回最大值 function max(num1,num2) if(num1>num2) then max = num1 else max = nnum2 end return max end --调用函数 print(

CSAPP: 位操作实现基本运算

本小妞迷上赌 提交于 2019-12-02 09:09:23
目录 实验要求 实现代码 1、pow2plus1 2、pow2plus4 3、bitXor 4、tmin 5、isTmax 6、allOddBits 7、negate 8、isAsciiDigit 9、conditional 10、isLessOrEqual 11、logicalNeg 12、howManyBits 13、floatScale2 14、floatFloat2Int 15、floatPower2 @(位操作实现简单函数) 实验要求 给出15个函数,规定了实现每个函数需要的逻辑和算术操作符(规定数量)。 只能使用规定的操作符! ˜ & ˆ | + << >> 不能使用循环或者条件语句 不能使用超过8位的常数(ff) 实现代码 1、pow2plus1 /* * pow2plus1 - returns 2^x + 1, where 0 <= x <= 31 */ int pow2plus1(int x) { /* exploit ability of shifts to compute powers of 2 */ return (1 << x) + 1; } 2、pow2plus4 /* * pow2plus4 - returns 2^x + 4, where 0 <= x <= 31 */ int pow2plus4(int x) { /* exploit

SPOJ GSS系列解题报告

≡放荡痞女 提交于 2019-12-02 08:16:43
众所周知, \(GSS\) 是用来练习线段树的一个非常好的系列。 依稀记得 \(8\) 月初还在 \(qbxt\) 时,某钟姓神仙说过 :“大家可以把 \(GSS\) 系列写一下,大概够大家写一个月了。”虽然我很不想承认,但他确实说中了 \(……\) 虽然中间夹有做各种杂题和一些模拟赛 \(……\) 题解 GSS 1 \(GSS\) 系列最简单的一道题,也算是后面题目的一个基础。 给定一个序列,维护区间最大子段和。 我们维护这样几个东西 \(:lsum, rsum, maxsum, maxval.\) 分别表示区间最大前缀和,区间最大后缀和,区间最大子段和,区间最大值,其中最大前缀和与最大后缀和用于辅助求出最大子段和。 我们考虑一下如何合并左右两个区间: 对于当前区间的 \(lsum\) ,我们取左区间的 \(lsum\) 和左区间的 \(sum+\) 右区间的 \(lsum\) 中的最大值来更新。 对于当前区间的 \(rsum\) ,我们采取与维护 \(lsum\) 相似的方式维护,取右区间的 \(rsum\) 和左区间的 \(lsum+\) 右区间的 \(sum\) 中的最大值来更新。 对于当前区间的 \(maxsum\) ,即最大子段和,我们取左区间的 \(maxsum\) 和右区间的 \(maxsum\) 和左区间的 \(rsum+\) 右区间的 \(lsum\)

求自定类型元素的最大值

时光毁灭记忆、已成空白 提交于 2019-12-02 06:47:33
本题要求实现一个函数,求N个集合元素S[]中的最大值,其中集合元素的类型为自定义的ElementType。 函数接口定义: ElementType Max( ElementType S[], int N ); 其中给定集合元素存放在数组S[]中,正整数N是数组元素个数。该函数须返回N个S[]元素中的最大值,其值也必须是ElementType类型。 裁判测试程序样例: #include <stdio.h> #define MAXN 10 typedef float ElementType; ElementType Max( ElementType S[], int N ); int main () { ElementType S[MAXN]; int N, i; scanf("%d", &N); for ( i=0; i<N; i++ ) scanf("%f", &S[i]); printf("%.2f\n", Max(S, N)); return 0; } /* 你的代码将被嵌在这里 */ 输入样例: 3 12.3 34 -5 输出样例: 34.00 ElementType Max(ElementType S[],int N) { int i; ElementType max; max=S[0]; for(i=1;i<N;i++) { if(S[i]>max) { max=S[i]

return和printf的区别

a 夏天 提交于 2019-12-02 00:28:45
printf,即打印函数,即将传入的传输打印到屏幕上来,重点在于打印到屏幕上,而不是"输出"这个概念,输出可能是在函数这个黑盒子里进行了数据运算,但是屏幕前的你我是看不见,其格式为 'printf("我是一个字符串");' 而return 则是返回值,什么是函数的返回值?一般是将这个函数对数据处理后的结果返回出来,如果没有返回值,会发生什么呢? #include<stdio.h> int main(void) { int a; a = max(1,2); printf(a); return 0; } int max(int x,int y) { int max; if (x > y) max = x; else max = y; } 我们会发现打印出的a仍然是max值,这是因为如果没有指定返回值,max函数会自动返回一个值,这次我们给它任意加上一个返回值 #include<stdio.h> int main(void) { int a; a = max(1,2); printf(a); return 0; } int max(int x,int y) { int max; if (x > y) max = x; else max = y; return 100; } 我们会发现打印出来是100,为什么呢?这是因为 a = max(1,2); 这个语句实际上包含了两个步骤: 为max

124. Binary Tree Maximum Path Sum

淺唱寂寞╮ 提交于 2019-12-01 12:36:17
1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8 * }; 9 */ 10 class Solution { 11 public: 12 int maxPathSum(TreeNode* root) { 13 int res=INT_MIN; 14 help(root, res); 15 return res; 16 } 17 18 int help(TreeNode* root, int& res){ 19 if(root==NULL) 20 return -1; 21 int releft=max(0, help(root->left, res)); 22 int reright=max(0, help(root->right, res)); 23 res = max(res, root->val+releft+reright); 24 return root->val + max(releft, reright); 25 } 26 }; 递归过程比较简单

$My$ $template$(持续更新)

廉价感情. 提交于 2019-12-01 09:50:55
树链剖分:(来源:树的统计) #include<bits/stdc++.h> #define rint register int using namespace std; inline void read(int &A) { A=0;int B=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')B=-1;ch=getchar();} while(ch>='0'&&ch<='9'){A=(A<<3)+(A<<1)+ch-'0';ch=getchar();} A=A*B;return ; } int n,q,v[60004],w[30004],nxt[60004],first[30004],tot; int f[30004],d[30004],siz[30004],son[30004]; int id[30004],rk[30004],cnt,tp[30004],ans; char ch[13]; struct node{int k,mx;}t[30004<<2]; inline void build_line(int uu,int vv) { v[++tot]=vv,nxt[tot]=first[uu]; first[uu]=tot; } inline void dfs(int x,int fa,int dep) { f[x]

retrying模块的使用

ε祈祈猫儿з 提交于 2019-11-30 16:48:48
安装模块:pip3 install retrying 使用方式: 使用retrying模块提供的retry模块 通过装饰器的方式使用,让装饰器的函数反复的执行 retry可以传入参数stop_max_attempt_number,让函数报错后继续重新执行,达到最大执行次数的上线,如果每次都报错,整个函数就报错,只要中间有一个成功了的话,程序就可以继续往后面执行了 例子: from retrying import retry @retry(stop_max_attempt_number=5,wait_random_min=1000,wait_random_max=5000) def run(): print("开始重试") raise NameError if __name__ == '__main__': run() 首先导入了retry模块 然后装饰了一个run函数,函数中很简单,主要就是通过raise跑出了一个异常,执行这个代码 我们可以发现,程序打印了五次开始重试,最后一次抛出异常,NameError,那么到了这里我们就可以感受到,就是这么简单的代码,就完成了五次重试,同时这五次重试的间隔时间也是不同的,要是想尝试重复十次以上的的话,就需要把上面的stop_max_attempt_number改成10就可以了,到这里就可以解释retry装饰器的参数了

AtCoder Grand Contest 038题解

孤街浪徒 提交于 2019-11-30 16:34:05
好久没更了 写点东西吧= = A 01Matrix 简单构造 左上角和右下角染成1其他染成0即可 #include<bits/stdc++.h> #define ll long long using namespace std; int a[1010][1010]; int main(){ int n,m,A,B; cin>>n>>m>>A>>B; if(A*2>m||B*2>n)return puts("-1"),0; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++){ if(i<=B&&j<=A)putchar('1'); else if(i>B&&j>A)putchar('1'); else putchar('0'); if(j==m)puts(""); } return 0; } B Sorting a Segment 考虑若(L,R)和(L',R')排序后相同 则 $ \forall $ L<L''<L',(L,R)和(L'',R'')排序后相同 因此只需处理相邻两个是否排序后是否相同即左右两端点是否恰是最值即可 注意若两个区间排序后不改变任何数位置需要特殊处理 形式化的,我们先拉出所有排序后不改变位置的区间然后数前面相邻相同的数量即可 #include<bits/stdc++.h> #define ll long long

PTA里面比较重要的一道题

我怕爱的太早我们不能终老 提交于 2019-11-30 09:05:19
题目: 首先我自己在做这道题时使用的代码: # include <stdio.h> # include <math.h> struct Fraction { int n ; int m ; } A [ 110 ] ; int main ( void ) { int N ; long long int M = 1 ; long long int SF = 0 ; scanf ( "%d" , & N ) ; for ( int i = 0 ; i < N ; i ++ ) { scanf ( "%d/%d" , & A [ i ] . n , & A [ i ] . m ) ; int max ; if ( A [ i ] . m > A [ i ] . n ) max = A [ i ] . m ; else max = A [ i ] . n ; for ( int j = 2 ; j <= max ; j ++ ) { if ( A [ i ] . n % j == 0 && A [ i ] . m % j == 0 ) { A [ i ] . n = A [ i ] . n / j ; A [ i ] . m = A [ i ] . m / j ; j = 2 ; } } //printf("%d\n",A[i].m); M = A [ i ] . m * M ; } /