算法设计课程
算法设计课程
终极之旅
小白
展开
-
全排列问题
#include void Swap(int &a,int &b){ int temp; temp=a; a=b; b=temp; } void Perm(int list[],int k,int m){ if(k==m){ for(int i=0;i<=m;i++) printf("%d ",list[i]); printf("\n"); } else原创 2016-07-29 10:12:42 · 216 阅读 · 0 评论 -
分治法解马的Hamilton
#include int map[1000][1000]; int index =1; int horse[6][150]={{1,30,33,16,3,24,32,17,2,23,34,15,29,36,31,14,25,4,18,9,6,35,22,13,7,28,11,20,5,26,10,19,8,27,12,21} ,{1,10,31,40,21,14,29,38,32,原创 2016-11-21 21:02:28 · 2479 阅读 · 9 评论 -
反转金币问题
#include int begin[100][100]; int end[100][100]; int temp[100][100]; int count = 0; int changeLine(int x,int y,int n) { // printf("*"); for(int i = 0;i<y;i++ ) temp[n][i] = 1-temp[n][i]; count原创 2016-11-21 21:01:48 · 366 阅读 · 0 评论 -
大数的阶乘
#include #include long long number[2][10000001]; int index = 1; void fun(int n) { number[n%2][0]=0; for(int i = 0;i<index;i++) { number[n%2][i]+=number[(n+1)%2][i]*n; number[n%2][i+1]=numbe原创 2016-11-21 21:01:11 · 283 阅读 · 0 评论 -
半数集VS半数单集
#include #include int a[1000]; int fun1(int n) //半数单集 { if(a[n]) return a[n]; a[n]=1; for(int i = 1;i<=n/2;i++) { a[n]+=fun1(i); if(i>=10 && 2*(i/10)<=i%10) //半数集和半数单集区别的最主要的地方原创 2016-11-21 21:00:28 · 392 阅读 · 0 评论 -
大数的加法
#include #include int main(){ int a[100],b[100],c[100]; char str1[100],str2[100]; int inc,index,i,j; printf("输入str1:"); scanf("%s",str1); printf("输入str2:"); scanf("%s",str2); index=0; for(i=s原创 2016-11-05 09:47:32 · 308 阅读 · 0 评论 -
最多约数问题
正整数 x 的约数是能整除x的正整数,其约数的个数记为div(x),例如div(10)=4。设 a 和 b 是两个正整数,找出 a 和 b 之间约数个数最多的数 x 的约数个数。 样例输入: 1 36 样例输出: 9 #include int div(int p){ int i=1; int count=0; for (i=1;i<=p;i++原创 2016-09-07 19:44:43 · 659 阅读 · 0 评论 -
最大间隙问题。给定 n 个实数,求这n个实数在数轴上相邻2个数之间的最大差值,设计解最大间隙问题的线性时间算法。
#include #include int main(){ float a[50]; float b[50]; float c,d; int num,i,j; printf("输入实数个数\n"); scanf("%d",&num ); printf("输入实数:\n"); for(i=原创 2016-09-07 19:23:23 · 1908 阅读 · 0 评论 -
将两个正整数的最大公约数表示成两个数的线性组合
嗯原创 2016-09-02 22:08:14 · 2759 阅读 · 0 评论 -
多少个1组成的整数可以被2011整除?
#include int main(){ int n,m; n = 1; for(m=1;m { if(n%2011==0) break; else n=(n%2011)*10+1; } printf("%d个1",m-1); return 0; } //判断循环到多少位,哈哈哈哈原创 2016-09-07 19:01:49 · 560 阅读 · 0 评论 -
整数划分问题
将正整数n表示成一系列正整数之和。 将最大加数不大于n1不大于m的划分记作q(n,m)。#include int q(int n,int m){ if((n<1)||(m<1)) return 0; if((n==1)||(m==1)) return 1; if(n<m) return q(n,n); if(n==m) return q(n,m-1)+1; ret原创 2016-08-01 08:04:40 · 332 阅读 · 0 评论 -
众数问题
描述 所谓众数,就是对于给定的含有N个元素的多重集合,每个元素在S中出现次数最多的成为该元素的重数, 多重集合S重的重数最大的元素成为众数。例如:S={1,2,2,2,3,5},则多重集S的众数是2,其重数为3。 现在你的任务是:对于给定的由m个自然数组成的多重集S,计算出S的众数及其重数。 输入第一行为n,表示测试数据组数。(n 每组测试的第一行是一个整数m,表示多原创 2016-12-15 18:25:37 · 437 阅读 · 0 评论