随笔分类 -  C/C++程序例子

数组前半部分和后半部分有序的全排序
摘要:例如:已知数组a前半部分a[0,mid - 1],后半部分a[mid,num-1],现前半部分和后半部分均已排好序。要求:实现a数组的从小到大排序。空间复杂度为O(1). 1 #include 2 using namespace std; 3 4 void PrintArry(int v[],int len) 5 { 6 for(int i = 0; i left ; -- i) {24 v[i] = v[i-1];25 }26 v[left] = temp;27 28 //move the current ... 阅读全文
posted @ 2013-10-31 21:03 猿人谷 阅读(1062) 评论(0) 推荐(0) 编辑
八皇后问题
摘要:主要包括全排列和回溯两类,其中全排列可以递归与非递归,回溯也可以递归与非递归。于是加一起有4种解法。#include #include using namespace std;template struct ArraySizeHelper {char _[N];};template ArraySizeHelper makeArraySizeHelper(T(&)[N]);#define ARRAY_SIZE(a) sizeof(makeArraySizeHelper(a))bool valid_permutation(const int *queen, int len){ bool . 阅读全文
posted @ 2013-09-10 15:48 猿人谷 阅读(400) 评论(0) 推荐(0) 编辑
转载:常见的排序算法及实现
摘要:目录(?)[-]一排序的概念一排序sort或分类二排序方法的分类三排序算法分析二插入排序一直接插入排序基本思想二一趟直接插入排序方法三直接插入排序算法四算法分析三希尔排序一希尔排序基本思想二Shell排序的算法实现三算法分析四交换排序一冒泡排序二快速排序QuickSort五直接选择排序Straight Selection Sort直接选择排序的基本思想堆排序六两路归并算法七箱排序Bin Sort八桶排序九各种排序方法比较转自:http://blog.csdn.net/w397090770/article/details/8074821一、排序的概念一、排序(sort)或分类所谓排序,就是要整理 阅读全文
posted @ 2013-07-22 21:01 猿人谷 阅读(1380) 评论(0) 推荐(0) 编辑
求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
摘要:题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时 共有5个数相加),几个数相加有键盘控制。1.程序分析:关键是计算出每一项的值。2.程序源代码: 1 #include<stdio.h> 2 int main() 3 { int a,n,count=1; 4 long int sn=0,tn=0; 5 printf("please input a and n\n"); 6 scanf("%d,%d",&a,&n); 7 printf("a=%d 阅读全文
posted @ 2012-12-12 15:48 猿人谷 阅读(11745) 评论(0) 推荐(0) 编辑
sqrt()的运用
摘要:题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析:2.程序源代码:#include<stdio.h>#include<math.h>int main(){ long int i,x,y; for(i=1;i<10000;i++) { x=sqrt(i+100); y=sqrt(i+268); if(x*x==i+100&&y*y==i+268) printf(&q 阅读全文
posted @ 2012-12-12 15:34 猿人谷 阅读(354) 评论(0) 推荐(0) 编辑
将一个正整数分解质因数
摘要:1 #include<stdio.h> 2 int main() 3 { int n,i; 4 printf("please input a number:\n"); 5 scanf("%d",&n); 6 printf("%d=",n); 7 for(i=2;i<=n;i++) 8 { 9 while(n!=i)10 { 11 if(n%i==0)12 { printf("%d*",i);13 n=n/i;14 }15 else16 ... 阅读全文
posted @ 2012-12-11 17:42 猿人谷 阅读(266) 评论(0) 推荐(0) 编辑
“水仙花”数
摘要:题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数 本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。2.程序源代码: 1 #include<stdio.h> 2 int main() 3 { int i,j,k,n; 4 printf("water flower number is:\n"); 5 for(n=100;n<1000;n++) 6 { i=n/100; /*分解出百位*/ 7 k=n/1 阅读全文
posted @ 2012-12-11 17:28 猿人谷 阅读(325) 评论(0) 推荐(0) 编辑
计算阶乘n!
摘要:#include<stdio.h>int main(){ int n,k,p; printf("输入阶乘的基数n:\n"); scanf("%d",&n); p=1; k=1; while(k<=n) { p=p*k; k++; } printf("%d的阶乘为%d\n",n,p); return 0;} 阅读全文
posted @ 2012-12-11 17:14 猿人谷 阅读(288) 评论(0) 推荐(0) 编辑
打印乘法口诀表
摘要:1 #include<stdio.h> 2 int main() 3 { int i,j; 4 for(i=1;i<=9;i++) 5 { 6 for(j=1;j<=i;j++) 7 printf("%d*%d=%-4d",j,i,i*j); 8 printf("\n"); 9 }10 return 0;11 } 阅读全文
posted @ 2012-12-11 17:04 猿人谷 阅读(326) 评论(0) 推荐(0) 编辑
打印楼梯,同时在楼梯上方打印两个笑脸
摘要:题目:打印楼梯,同时在楼梯上方打印两个笑脸。 1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。2.程序源代码: 1 #include<stdio.h> 2 int main() 3 { int i,j; 4 printf("\1\1\n"); //打印两个笑脸 5 for(i=1;i<11;i++) 6 { for(j=1;j<i;j++) 7 printf("%c%c",23,23); //23这个数字可以是任意数,代表该数所对应的符号 8 printf("\n"); 9 }10 阅读全文
posted @ 2012-12-11 16:53 猿人谷 阅读(1206) 评论(0) 推荐(0) 编辑
输入某年某月某日,判断这一天是这一年的第几天
摘要:题目:输入某年某月某日,判断这一天是这一年的第几天?1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊 情况,闰年且输入月份大于3时需考虑多加一天。2.程序源代码: 1 #include<stdio.h> 2 int main() 3 { 4 int day,month,year,sum,leap; 5 printf("\nplease input year,month,day\n"); 6 scanf("%d,%d,%d",&year,&month,&day); 7 switc 阅读全文
posted @ 2012-12-11 13:26 猿人谷 阅读(1993) 评论(0) 推荐(1) 编辑
三位数的排列组合
摘要:题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。 2.程序源代码: 1 #include<stdio.h> 2 int main() 3 { int i,j,k; 4 printf("\n"); 5 for(i=1;i<5;i++) /*以下为三重循环*/ 6 for(j=1;j<5;j++) 7 for(k=1;k<5;k++) 8 { if(i!=k&&i!=j&&j!=k 阅读全文
posted @ 2012-12-11 13:22 猿人谷 阅读(1456) 评论(0) 推荐(0) 编辑