int函数

typedef和#define

久未见 提交于 2020-03-16 18:59:47
typedef关键字和#define有一种共同的作用,为一种类型创建自定义的名字,如 typedef int myint; #define myint int 是一样的,但是他们之间仍然有很大的区别。 typedef语句是在编译过程中被解析的,而#define是在编译之前的预处理过程中被解析的。#define所进行的只是对自定义别名的简单替换,而typedef则要灵活得多。总的来说,typedef可以做到#define所能做的所有事情,而且可以做得更好。 #define比较特别的一点是它可以用一个自定义的符号名去代替一个value并且可以定义一个类似于函数的宏,而typedef不可以。但是在C++中并不推荐这么做,因为这些行为会导致许多难以察觉的问题,一般用const常量和inline函数来实现#define的这种功能。 现在来看一下typedef和#define的重要区别: 首先 ,typedef可以看作是是基于基本类型创建了一种新的复合(或是简单)类型,它自定义的名字有着类型名(如int)所有的特点,而#define只是简单的符号替换。如下例所示: #define dmyint int* typedef int* tmyint; … tmyint a,b; dmyint c,d; 上面这个程序片段中的a,b,c都是int型的指针,而d则是int型的变量。因为上面a,b,c

Java中Calendar的用法

怎甘沉沦 提交于 2020-03-16 09:24:11
首先:Calendar是一个抽象类,不可以通过new来获取一个实例,可以通过类方法getinstance()获取此类型的一个通用的对象 ①用法: Calendar lendar=Calendar.getInstance(); int year=2015; int month=12; int day=21; calendar.set(year,month,day); ②获取当天的年与日: 我们可以使用此方法get()获取对应的年月日.用法如下: (月份的获取是比实际的月份要小一个月,因此我们获取当前的月份的时候需要+1的操作 ) Calendar calendar = Calendar.getInstance(); int cur_month=calendat.get(Calendar.MONTH)+1; int cur_year=calendar.get(Calendar.YEAR); int cur_day=calendar.get(Calendar.DAY_OF_MONTH); ③ after函数跟before函数的用法当需要知道某一天的日期是否比今日的日期早或者晚之类时;可以计算出2个时间段之间的日期; 思路如下:我们利用set函数设定一个开始时间,一个结束时间,然后使用before或者after函数 //获取这个时间段内的所有日期 public static List

P1314 聪明的质监员

旧巷老猫 提交于 2020-03-16 08:19:18
知识点:二分答案,前缀和 原题面 题目要求: 给定 一序列 \(a\) , 对于每个序列元素 有两个参数: \(w\) 与 \(v\) 给定一参数 \(S\) , 给定 \(m\) 个区间 \([l_i,r_i]\) 可任意选择 参数 \(W\) 的值 总贡献为 : \[\large Y = \sum\limits_{i=1}^{m}{(\sum\limits_j{1}\times {\sum\limits_j {v_j}})}(j\in[l_i,r_i], \text{且} w_j\ge W, j\text{为编号})\] 求 最小的 \(\mid Y-S\mid\) 的值 分析题意: 对于所求的 \(W\) , 发现如下性质: 当 \(W\) 单增时, \(w_j\) 大于等于 \(W\) 的 元素数量 单减 , 总贡献 \(Y\) 单减 当 \(W\) 单减时, \(w_j\) 大于等于 \(W\) 的 元素数量 单增 , 总贡献 \(Y\) 单增 发现 \(W\) 的取值 与 \(Y\) 呈 负相关, 则可二分答案 枚举 \(W\) ; 当 \(W\) 确定时 , 考虑如何求得 \(Y\) , 以检查答案的优劣性 暴力枚举 \(!\) 对于 每一个所求区间 , 暴力枚举其中合法元素 , 并暴力计算 复杂度 \(O(nm)\) , 必然会被卡掉 所求的 区间内合法元素数 及

今日算法题

点点圈 提交于 2020-03-15 22:23:44
目录 题目一:矩阵乘法 题目二:阶乘计算 题目三:高精度加法 题目四:Huffuman树 题目一:矩阵乘法 问题描述: 给定一个N阶矩阵A,输出A的M次幂(M是非负整数)(时间限制:1.0s,内存限制:512.0MB,) 例如: A = 1 2 3 4 A的2次幂 7 10 15 22 输入、输出格式: 第一行是一个正整数N、M(1<=N<=30, 0<=M<=5),表示矩阵A的阶数和要求的幂数。 接下来N行,每行N个绝对值不超过10的非负整数,描述矩阵A的值。 输出共N行,每行N个整数,表示A的M次幂所对应的矩阵。相邻的数之间用一个空格隔开。 解决思路: 1.写出两个矩阵相乘的函数再执行相应次数即可。 2.需要注意矩阵的0次幂是单位矩阵。 解决代码: import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); // 阶数 int m = sc.nextInt(); // 幂数 int[][] arr1 = new int[n][n]; for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) {

标准C++中的string类的用法总结

岁酱吖の 提交于 2020-03-15 22:02:48
标准C++中的string类的用法总结 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用。但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?是肯定的。也许有人会说,即使不用MFC框架,也可以想办法使用MFC中的API,具体的操作方法在本文最后给出操作方法。其实,可能很多人很可能会忽略掉标准C++中string类的使用。标准C++中提供的string类得功能也是非常强大的,一般都能满足我们开发项目时使用。现将具体用法的一部分罗列如下,只起一个抛砖引玉的作用吧,好了,废话少说,直接进入正题吧! 要想使用标准C++中string类,必须要包含 #include <string>// 注意是<string>,不是<string.h>,带.h的是C语言中的头文件 using std::string; using std::wstring; 或 using namespace std; 下面你就可以使用string/wstring了,它们两分别对应着char和wchar_t。 string和wstring的用法是一样的,以下只用string作介绍: string类的构造函数: string(const char *s); //用c字符串s初始化 string(int n,char c); /

标准C++中的string类的用法总结

心不动则不痛 提交于 2020-03-15 22:02:30
相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用。但是如果 离开了MFC框架,还有没有这样使用起来非常方便的类呢?是肯定的。也许有人会说,即使不用MFC框架,也可以想办法使用MFC中的API,具体的操 作方法在本文最后给出操作方法。其实,可能很多人很可能会忽略掉标准C++中string类的使用。标准C++中提供的string类得功能也是非常强大 的,一般都能满足我们开发项目时使用。现将具体用法的一部分罗列如下,只起一个抛砖引玉的作用吧,好了,废话少说,直接进入正题吧! 要想使用标准C++中string类,必须要包含 #include // 注意是,不是,带.h的是C语言中的头文件 using std::string; using std::wstring; 或 using namespace std; 下面你就可以使用string/wstring了,它们两分别对应着char和wchar_t。 string和wstring的用法是一样的,以下只用string作介绍: string类的构造函数: string(const char *s); //用c字符串s初始化 string(int n,char c); //用n个字符c初始化 此外,string类还支持默认构造函数和复制构造函数,如string s1

c语言qsort的使用

孤街醉人 提交于 2020-03-15 20:41:47
目的 基于快速排序对数组进行排序,数组元素可以是结构体。 前提 qsort属于内置函数,需要包含头文件 stdlib.h 函数原型 void qsort( void *ptr, size_t count, size_t size,int (*comp)(const void *, const void *) ); /** void *ptr:空指针, 指向需要排序的数组 size_t count:数组元素个数,size_t在32位机器上unsigned int(4byte),64位机器上unsigned long(8byte) size:数组元素的字节数大小,通常用sizeof()来计算,平台不同,同一类型的变量占据的字节数可能不用,增强可移植性 int (*comp)(const void *, const void *) : 函数指针,将函数名作为参数,该函数的形参的类型均为const void *,函数外表是一样的,内容却有所不同,返回值类型相同 **/ 用户自定义函数 指明具体的比较对象 int cmp(const void *a, const void *b); // 自定义函数内容,若果a值大于b值,返回1, { /** 在函数内部将const void* 转换成实际的类型; **/ //默认升序写法 if ( *(MyType*)a < *(MyType*)b )

第二次结对编程作业

五迷三道 提交于 2020-03-15 17:46:48
1、在文章开头给出结对同学的博客链接、本作业博客的链接、你所Fork的同名仓库的Github项目地址 队友的博客: 陈秋琴 队友的本次博客: 戳 Github地址: 在这里 2、给出具体分工 秋琴:交互,API,算法。 雅辉:界面,算法调试,博客。 3、给出PSP表格 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 30 60 Estimate ·估计这个任务需要多少时间 30 60 Development 开发 2760 3570 Analysis 需求分析 (包括学习新技术) 120 180 Design Spec 生成设计文档 60 60 Design Review 设计复审 30 30 Coding Standard 代码规范 (为目前的开发制定合适的规范) 20 30 Design 具体设计 90 120 Coding 具体编码 2100 2700 Code Review 代码复审 120 150 Test 测试(自我测试,修改代码,提交修改) 200 300 Reporting 报告 120 135 Test Repor 测试报告 45 60 Size Measurement 计算工作量 30 30 Postmortem & Process Improvement Plan

选择排序算法和冒泡算法的区别

青春壹個敷衍的年華 提交于 2020-03-15 04:54:05
/选择排序法对数组中的n个数,由小到大排序 #include<stdio.h> main() { int n=10,i,b,a[10]; int sort(int array[],int n); // scanf("%d",&10); for(i=0;i<10;i++)//键盘输入数组元素 scanf("%d",&a[i]); sort(a,10);//调用函数 for(i=0;i<10;i++)//输出排序之后的函数 printf("%3d",a[i]); } //排序子函数错误!!!!这是冒泡的思想!!! //int sort(int array[],int n)//排序子函数 { int i,j,k,t; for(i=0;i<n-1;i++)//需要比较n-1次 { //k=i; for(j=i+1;j<n;j++)//第i次比较,与第i+1个数开始比较 { if(array[j]<array[i]) { t=array[i]; array[i]=array[j]; array[j]=t; } } } } //下面是正确的子函数 int sort(int array[],int n)//排序函数 { int i,j,k,t; for(i=0;i<n-1;i++)//需要比较n-1次 { k=i; for(j=i+1;j<n;j++)//第i次比较,与第i+1个数开始比较 if

Java 泛型的实际运用、使用数组实现栈

孤街浪徒 提交于 2020-03-14 17:36:42
1、泛型的实际应用——实现最小值函数 自己设计一个泛型的获取数组最小值的函数,并且数组的元素类型要是Number的子类并且实现了Comparable接口。 public <T extends Number & Comparable<? super T>> T min(T[] arr) { //因为Number并没有implements Comparable,所以需要&一起检查类型 if (arr == null || arr.length == 0) //数组未初始化或是空数组 return null; //如果数组有元素,就找到最小值 T min = arr[0]; for (int i = 1; i < arr.length; i++) { //arr.length是数组的元素个数 if (min.compareTo(arr[i]) > 0) //>0说明min>arr[i] min = arr[i]; } return min; } min前面的T是返回值类型,传入T类型的数组,返回的最小值也是T类型。 Comparable接口只有一个方法:compareTo(),比较2个的大小,返回一个int型的值,1表是前面的大,0表示2个相等,-1表示后面(括号里)的大。 如果数组元素没有实现Comparable接口,直接大于、小于比较也行。 测试: Integer