算法
winding...
这个作者很懒,什么都没留下…
展开
-
寻找指定和的整数对
寻找指定和的整数对输入 n ( n<= 100,000)个整数,找出其中的两个数,它们之和等于整数 m (假定肯定有解)。题中所有整数都能用 int 表示思路:先排序,再假设数组中a[i]是整数对的一个,那么另一数为m-a[i],然后对数组中的其他元素进行二分查找#include<iostream>#include<algorithm>using names...原创 2019-11-20 21:50:06 · 915 阅读 · 1 评论 -
输出前m大的数
输出前m大的数描述:给定一个数组包含n个元素,统计前m大的数并且把这m个数从大到小输 出。输入:第一行包含一个整数n,表示数组的大小。n < 100000。第二行包含n个整数,表示数组的元素,整数之间以一个空格分开 。每个整数的绝对值不超过100000000。 第三行包含一个整数m。m < n。输出:从大到小输出前m大的数,每个数一行。思路:快速排序,再输出前m大的数#i...原创 2019-11-20 21:40:47 · 239 阅读 · 0 评论 -
全排列(递归)
生成1-n的排列用数组A存储序列,cur标识元素的位置void print_permutation(int n,int *A,int cur){ if(cur==n){ //递归边界 for(int i=0;i<n;i++) cout<<A[i]<<" "; cout<&...原创 2019-03-19 17:05:25 · 133 阅读 · 0 评论 -
子集生成
子集生成1、增量构造法void print_subset(int n,int *A,int cur){ for(int i=0;i<cur;i++) printf("%d ",A[i]); printf("\n"); int s=cur?A[cur-1]+1:0; for(int i=s;i<n;i++){ A[cur]=i; print_subset(n,A...原创 2019-03-19 23:23:29 · 99 阅读 · 0 评论 -
素数判断
素数判断int is_prime(int n){ if(n<=1) return 0; int m=floor(sqrt(n)+0.5); for(int i=2;i<=m;i++) if(n%i==0) return 0; return 1;}原创 2019-03-18 20:53:49 · 169 阅读 · 0 评论 -
用函数交换变量
用函数交换变量#include<stdio.h> void swap(int *a,int *b){int t=*a;*a=*b;*b=t;}int main(){int a=3,b=4;swap(&a,&b);printf("%d %d\n",a,b);return 0;}原创 2019-03-18 21:33:59 · 184 阅读 · 0 评论 -
用递归法计算阶乘
用递归法计算阶乘阶乘函数:f(0)=1f(n)=f(n-1)×n#include<stdio.h>int f(int n){return n==0?1:f(n-1)*n;}int main(){printf("%d\n",f(3));}原创 2019-03-18 22:04:08 · 357 阅读 · 0 评论