随笔分类 - 算法
摘要:直线栅格化在计算机图形处理中非常常用,看了看网上的介绍比较常用的就是Bresenham 算法,搜索了下网上的算法,试了试,有的有问题,自己写了一个,测试通过。#include <stdio.h>#include <stdlib.h>void LinearGrid (int x1, int y1, int x2 , int y2){ int dx = abs( x2 - x1 ); int dy = abs( y2 - y1 ); int x = x1; int y = y1; int sx = x2 > x1 ? 1 : -1; int sy = y2 >
阅读全文
摘要:游戏开发中会有寻路功能,目前应用比较广泛的就是A*算法,算法描述:http://blog.vckbase.com/panic/archive/2005/03/20/3778.html,已经说的相当清楚了,实现起来不算特别麻烦,自己按照描述实现了一个算法,只是一个简单实现,实际项目中有待优化:#ifndef _A_STAR_H_#define _A_STAR_H_#include <iostream>#include <math.h>#include <windows.h>#define NULL 0#define IN_OPEN_LIST 1#define
阅读全文
摘要:#include <stdio.h>int binary_find(int arry[], int find_value){ int low = 0; int high = sizeof(arry) / sizeof(arry[0]) - 1; while(low <= high) { int index = (low + high) / 2; if(arry[index] == find_value) { return index; ...
阅读全文
摘要:算法思想:从数列中找出一个元素放在最前面,然后对剩下的n-1元素进行全排列。源代码:#include <stdio.h>void output(int a[], int n){ for(int i = 0; i < n; ++ i) printf("%d", a[i]); printf("\n");}void swap(int a[], int k, int t){ int b = a[k]; a[k] = a[t]; a[t] = b;}void perml(int a[], int m, int n){ if...
阅读全文
摘要:看CSDN上有人讨论面试题,其中一题,自己动手也了一下#include <stdio.h>#define ASSERT(x) if((x)) return ;void strcpy(char* des, char* src){ ASSERT(!des || !src || !(*src)); *des = '\0'; des ++; src ++; while(*src != '\0') *(des ++) = *(src ++); *des = '\0'; src --; des --; w...
阅读全文
摘要:算法思路:取余,再将余数逆序#include <stdio.h>void m2n(int m, char* mNum, int n, char* nNum){ int i = 0; char c, *p = nNum; while(*mNum != '\0') { i = i * m + *mNum - '0'; mNum ++; } while(i) { *p = i % n + '0'; i /= n; p ++...
阅读全文
摘要:算法思想:给定一个数列,如果一个元素出现的次数大于数列元素总数的一半,则称为多数元素。此算法根据如果一个元素是多数元素则此数列去掉两个不同元素后,该元素仍然为多 数元素。源代码:#include <stdio.h>int candidate(int a[], int n, int m){ int j = m; int c = a[m]; int count = 1; while((j < n) && count > 0) { j ++; if(a[j] == c) c...
阅读全文
摘要:问题描述:一个背包容量为V,有N件不同类别的物品体积和价值分别为:v[i], w[i],把这些物品装入背包中保证背包中物品的价值最高。背包问题分为以下几种:一、0/1背包问题1、算法描述:背包里的物品不能有重复,属于不同类别;2、算法方程式:f[i][v] = max{f[i-1][v], f[i-1][v - c[i]] + w[i]};3、算法举例:列(物品类别) 行(背包容量) 行列交叉得到背包内物品的价值01234567890003333333310034477777200345789912300345781011124、源代码:#include<stdio.h>stati
阅读全文

浙公网安备 33010602011771号