本篇文章主要介绍了"0907-象棋五子棋代码分析/寻找算法以及排序算法",主要涉及到方面的内容,对于其他编程jrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下:
象棋五子棋代码分析编译代码报错:错误 1 error MSB8031: Building an MFC project for a non-Unicode ch...
象棋五子棋代码分析
编译代码报错:
错误 1 error MSB8031: Building an MFC project for a non-Unicode character set is deprecated. You must change the project property to Unicode or download an additional library. See http://go.microsoft.com/fwlink/p/?LinkId=286820 for more information. C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppBuild.targets 369 5 chess
安装vc_mbcsmfc.exe。
Pdb格式不兼容报错:





寻找算法以及排序算法
插值查找.cpp
#define _CRT_SECURE_NO_WARNINGS
#include
#include
int Bin_Search(int *a, int key, int n)
{
int low, high, mid;
low = 0;
high = n - 1;
while (low <= high)
{
mid = low + (high - low) * (key - a[low]) / (a[high] - a[low]); //此处于二分查找不同,套用插值公式
if (a[mid] > key) //如果key比插值小,把高位调整为插值下标的下一位
high = mid - 1;
else if (a[mid] < key)
low = mid + 1;
else
return mid;
}
return -1;
}
int mainA()
{
int a[] = { 1, 5, 17, 25, 33, 38, 46, 55, 69, 75, 99 };
int key;
int len = sizeof(a) / sizeof(*a);
printf("请输入要查找的值:\n");
scanf("%d", &key);
int pos = Bin_Search(a, key, len);
if (pos != -1)
printf("在数组的第%d个位置找到:%d\n", pos + 1, key);
else
printf("未在数组中找到元素:%d\n", key);
system("pause");
return 0;
}
斐波那契查找.cpp
#define _CRT_SECURE_NO_WARNINGS
#define MAXSIZE 13
#include
#include
//斐波那契查找算法的明显优点在于它只涉及加法和减法运算,而不用除法。
//因为除法比加减法要占去更多的机时,因此,斐波那契查找的平均性能要比折半查找好。
void fibonacci(int *f)
{
f[0] = 1;
f[1] = 1;
for (int i = 2; i < MAXSIZE; ++i)
f[i] = f[i - 2] + f[i - 1];
}
int fibonacci_search(int *a, int key, int n)
{
int low = 0, high = n - 1;
int mid = 0;
int k = 0;
int F[MAXSIZE];
fibonacci(F);
while (n > F[k] - 1) //计算出n在斐波那契中的数列
++k;
for (int i = n; i < F[k] - 1; ++i) //把数组补全
{
a[i] = a[high];
}
while (low <= high)
{
mid = low + F[k - 1] - 1; //根据斐波那契数列进行黄金分割
if (a[mid] > key)
{
high = mid - 1;
k = k - 1;
}
else if (a[mid] < key)
{
low = mid + 1;
k = k - 2;
}
else{
if (mid <= high) //如果为真则找到相应的位置
return mid;
else
return -1;
}
}
return -1;
}
int main14()
{
int a[MAXSIZE] = { 5, 15, 19, 20, 25, 31, 38, 41, 45, 49, 52, 55, 57 };
int k;
printf("请输入要查找的数字:\n");
scanf("%d", &k);
int pos = fibonacci_search(a, k, 13);
if (pos != -1)
printf("在数组的第%d个位置找到元素:%d\n", pos + 1, k);
else
printf("未在数组中找到元素:%d\n", k);
system("pause");
return 0;
}
插入.cpp