算法导论10.4-5
思路:
1、不停搜索当前节点的左孩子直到最后一个左孩子,并赋给当前节点
2、当前节点有右孩子,将右孩子设为当前节点,执行1
若当前节点没有右孩子,将当前节点标记为last,当前节点上溯到其父节点
3、执行1前,判断当前节点左右孩子是否为last,如为last跳到2
#include <stdio.h>
#include <stdlib.h>
//typedef struct NODE *tree;
typedef struct NODE *node;
s...
TITLE Integer Summation Program
;This program inputs multiple integers from the user
;stores them in an array,caculates the sum of the
;array,and displays the sum.
INCLUDE Irvine32.inc
IntegerCount = 3
.data
prompt1 byte "enter a signed integer:",0
prompt2 byte "the sum of the integer...
一个监狱看守从三个罪犯中随机选择一个予以释放,其他两个将被处死。警卫知道哪个人是否会被释放,但是不允许给罪犯任何关于其状态的信息。让我们分别称为罪犯为X,Y,Z.罪犯X私下问警卫Y或Z哪个会被处死,因为他已经知道他们中至少一个人会死,警卫不能透露任何关于他本人状态的信息。警卫告诉X,Y将被处死。X感到很高兴,因为他认为他或者Z将被释放,这意味着他被释放的概率是1/2。他正确吗?或者他的机会仍然是1/3?
分治法及暴力法求解数组中连续最大子数组及分别占用运行时间比较:
分治法:nlgn
暴力法:n*n
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <Windows.h>
#include <string.h>
#define NEGATIVE_INFINITY -1000
typedef struct RESULT{
int low;
int high;
int sum;
}Result;
void findmaxsubarr...
二分查找c代码
/*
*二分查找
*找到返回下标,否则返回-1
*/
int binaryfind(int *arr,int length,int num){
int min = 0;
int max = length -1;
int i = 0;
//判断查找的数是不是第一个或最后一个
i = (num == arr[min])?min:(num ==arr[max])?max:-1;
if(i != -1)
return i;
i = (min+max)/2;
whi...
插入排序代码:
/*插入排序*/
void insertionsort(int *arr,int n){
int i,j;
for(j = 1;j < n;j++){
int k = arr[j];
i = j-1;
while(i >-1 && arr[i] < k){
arr[i+1] = arr[i];
i--;
}
arr[i+1] = k;
}
}
/*
*归并排序
*/
void merge_sort(int *arr,int fi,int la){
if(fi < l...
在程序设计中,时时刻刻都用到变量的定义和变量的声明,可有些时候我们对这个概念不是很清楚,知道它是怎么用,但却不知是怎么一会事,下面我就简单的把他们的区别介绍如下:
变量的声明有两种情况:
(1) 一种是需要建立存储空间的(定义、声明)。例如:int a在声明的时候就已经建立了存储空间。
(2) 另一种是不需要建立存储空间的(声明)。例如:extern int a其中变量a是在别的文件中定义的。
前者是"定义性声明(defining declaration)"或者称为"定义(definition)",而后者是"引用性声明(referncing decl...
程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本文的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。
内存分配方式
(1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。
(2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。
(3...
①、
int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
int (*p)[3]; //p是一个指针,它指向一个具有3个整型元素的数组。
p=a;
②、
int *p[3] = {&a[0], &a[1], &a[2]}; //p是一个有着3个元素的数组,每个元素为一个指向整型变量的指针
两个数a、b (a>b)
如果c=a%b>0
则令 a=b,b=c
重复上述步骤直到a%b=0
此时b为所求最大公因数
代码:
#include <stdio.h>
#include <Windows.h>
int main(int argc,char argv[]){
int a,b,c;
printf("输入两个数:\n");
scanf("%d",&a);
scanf("%d",&b);
if(a<b){
c = a;
a = b;
b = c;
...
本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时、时间的获取、时间的计算和显示格式等方面进行了阐述。本文还通过大量的实例向你展示了time.h头文件中声明的各种函数和数据结构的详细使用方法。
关键字:UTC(世界标准时间),Calendar Time(日历时间),epoch(时间点),clock tick(时钟计时单元)
1.概念
在C/C++中,对字符串的操作有很多值得注意的问题,同样,C/C++对时间的操作也有许多值得大家注意的地方。最近,在技术群中有很多网友也多次问到过C++语言中对时间的操作、获...
平面魔方的一般定义:将自然数 1 到 N^2, 排列 N 行 N 列的方阵,使每行、每列及两条主对角线上的 N 个数的和都等于N (N^2+1)/2,这样的方阵称为 N 阶幻方。
通过搜索整理后,得到下面的算法:
对平面魔方的构造,分为三种情况:N为奇数、N为4的倍数、N为其它偶数(4n+2的形式)
N 为奇数时
(1) 将1放在第一行中间一列;
(2) 从2开始直到n×n止各数依次按下列规则存放:
按 45°方向行走,如向右上
每一个数存放的行比前一个数的行数减1,列数加1...
转自:http://www.cnblogs.com/applebunny/archive/2012/09/09/2677307.html
#include <stdio.h>
/*********************************
* 方法1: 第一维的长度可以不指定 *
* 但必须指定第二维的长度 *
*********************************/
void print_a(int a[][5], int n, int m)
{
int i, j;
for(i = 0; i < n; i+...
#include <stdio.h>
int i=0;
void move(int n,char a,char b,char c){
if(n == 1){
printf("1:a--c\n");
i++;
return;
}
move(n-1,a,c,b);
printf("%d:%c--%c\n",n,a,c);
move(n-1,b,a,c);
i++;
}
int main(int argc,char* argv[]){
int n = 64;
move(n,'A','B','C');
printf("...
ASCII码排序
描述
输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符。
输入
第一行输入一个数N,表示有N组测试数据。后面的N行输入多组数据,每组输入数据都是占一行,有三个字符组成,之间无空格。
输出
对于每组输入数据,输出一行,字符中间用一个空格分开。
#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>
int main(void){
int num=0,i,tmp;
cha...
没用字符串函数,采用递归
#include <stdio.h>
#include <string.h>
#include <windows.h>
/**
*判断输入的字符或中文字符是不是回文,如:你是谁是你,你是谁谁是你,abccba,abcba,a你好好你a
*@str:字符数组
*@i:数组下标
*@flag:返回判断,为1是回文,为0不是
*@n:字符总字节数
*/
void checkcn(char* str,int i,int* flag,int n);
/*主函数*/
int main(void){
char str[100...
ege库的小源码,小球随机运动与画的任意直线碰撞后反弹,程序运行需导入ege库
ege库下载地址:http://down.bccn.net/7190.html
将graphics.h、ege.h、相关开发工具对应的lib文件与源码放入同一目录即可
代码:
#include <graphics.h>
#include <iostream>
#include <vector>
#include <cstdlib>
#include <cmath>
#define SCREEN_WIDTH 800
#define SCREEN_H...
;***************************************
; 程序功能:读取CMOS时间并显示
; CMOS读写方法如下:
; 1.向地址端口70H写入要访问的单元地址
; 2.从71H端口读出数据
; 注意:CMOS中存放的是BCD码
; 数码: 0 1 2 3 4
; BCD码:0000 0001 0010 0011 0100
; 数码: 5 ...