• Echo-bcy
    了解作者
  • Visual C++
    开发工具
  • 845KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 1
    下载次数
  • 2017-12-06 19:38
    上传日期
vs2010 c++解决最近点对问题,适合初学者
最近点对.rar
  • 最近点对
  • 最近点对
  • Debug
  • link.5712.write.1.tlog
    2B
  • link.5712-cvtres.read.1.tlog
    2B
  • CL.read.1.tlog
    11.8KB
  • link.4380.read.1.tlog
    2B
  • link.4380-cvtres.write.1.tlog
    2B
  • link-cvtres.read.1.tlog
    2B
  • mt.read.1.tlog
    398B
  • 最近点对.exe.embed.manifest
    406B
  • cl.command.1.tlog
    730B
  • 最近点对.write.1.tlog
    0B
  • 最近点对.exe.embed.manifest.res
    472B
  • 最近点对.vcxprojResolveAssemblyReference.cache
    713B
  • link.4380.write.1.tlog
    2B
  • mt.command.1.tlog
    416B
  • link.7704.write.1.tlog
    2B
  • 最近点对_manifest.rc
    198B
  • CL.write.1.tlog
    462B
  • rc.command.1.tlog
    594B
  • 最近点对.lastbuildstate
    100B
  • link.4380-cvtres.read.1.tlog
    2B
  • a.obj
    10KB
  • link.7704-cvtres.write.1.tlog
    2B
  • link.7704.read.1.tlog
    2B
  • link.5712-cvtres.write.1.tlog
    2B
  • rc.write.1.tlog
    378B
  • link-cvtres.write.1.tlog
    2B
  • link.7704-cvtres.read.1.tlog
    2B
  • link.read.1.tlog
    8.5KB
  • vc100.idb
    323KB
  • vc100.pdb
    244KB
  • link.command.1.tlog
    3.3KB
  • link.write.1.tlog
    1008B
  • 最近点对.exe.intermediate.manifest
    381B
  • 最近点对.log
    3.7KB
  • link.5712.read.1.tlog
    2B
  • mt.write.1.tlog
    398B
  • rc.read.1.tlog
    370B
  • 最近点对.vcxproj.user
    143B
  • 最近点对.vcxproj.filters
    939B
  • a.cpp
    3.7KB
  • 最近点对.vcxproj
    3.8KB
  • ipch
  • 最近点对-e0586e03
  • 最近点对-31b468af.ipch
    1.9MB
  • Debug
  • 最近点对.exe
    29KB
  • 最近点对.ilk
    325.5KB
  • 最近点对.pdb
    675KB
  • 最近点对.suo
    11.5KB
  • 最近点对.sdf
    1.8MB
  • 最近点对.sln
    903B
内容介绍
/*#include <iostream> #include <algorithm rel='nofollow' onclick='return false;'> #include <cmath> #define INF 0x6FFFFFFF using namespace std; struct Node{ double x, y; friend bool operator < (const Node &a, const Node &b){ if(a.x == b.x) return a.y < b.y; return a.x < b.x; } }; Node* Point = NULL; double _distance(const Node a, const Node b) { return sqrt((a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y)); } double smaller(double p, double q) { return (p > q) ? q : p; } double Closest_distance(int left, int right) { double d = INF; double distance_tmp; if(left == right) return 0; if(right == left+1) return _distance( Point[left], Point[right] ); int mid = (left + right) / 2; d = smaller( Closest_distance(left,mid) , Closest_distance(mid,right) ); for(int i=mid-1; i>=left && Point[mid].x - Point[i].x < d; i--){ for(int j = mid+1; j<=right && Point[j].x - Point[mid].x < d && fabs( Point[i].y - Point[j].y) < d; j++){ distance_tmp = _distance( Point[i], Point[j] ); if(distance_tmp < d) d = distance_tmp; } } return d; } int main() { int n; cout<<"输入点对个数:"<<endl; cin>>n; cout<<"输入点对坐标"<<endl; Point = new Node[n]; for(int i=0; i<n ; i++){ cin>>Point[i].x>>Point[i].y; } sort(Point,Point+n); cout<<"最近距离为:"<<Closest_distance(0,n-1)<<endl; return 0; }*/ /*#define MAXLENGTH 1000 #include <stdio.h> #include <string.h> void compute(char * a, char * b,char *c) { int i,j,m,n; long sum,carry; m = strlen(a)-1; n = strlen(b)-1; for(i=m;i>=0;i--) a[i] -= '0'; for(i=n;i >=0;i--) b[i] -='0'; c[m+n+2] ='/0'; carry =0; for(i=m+n;i>=0;i--) { sum=carry; if((j=(i-m))<0) j=0; for(;j<=i&& j <=n;j++) sum += a[i-j]*b[j]; c[i+1] = sum %10 + '0'; /*算?出?保馈?留?的?数簓字?*/ /* carry = sum/10; } if((c[0]=carry+'0')=='0') /* if no carry*/ /* c[0] = '/040'; /* space */ /*} int main() { char a[MAXLENGTH],b[MAXLENGTH],c[MAXLENGTH*2]; puts("输入第一个大整数:"); gets(a); puts("输入第二个大整数:"); gets(b); compute(a,b,c); puts("结果为:"); for(int i=0;c[i]>=48&&c[i]<=57;i++){ printf("%c",c[i]); } getchar(); } */ #include <stdio.h> #include <stdlib.h> const int N=20; //最多放皇后的个数 int q[N]; //各皇后所在的行号 int cont = 0; //统计解得个数 //输出一个解 void print(int n) { int i,j; cont++; printf("第%d个解:",cont); for(i=1;i<=n;i++) printf("(%d,%d) ",i,q[i]); printf("\n"); } //检验第i行的k列上是否可以摆放皇后 int find(int i,int k) { int j=1; while(j<i) //j=1~i-1是已经放置了皇后的行 { //第j行的皇后是否在k列或(j,q[j])与(i,k)是否在斜线上 if(q[j]==k || abs(j-i)==abs(q[j]-k)) return 0; j++; } return 1; } //放置皇后到棋盘上 void place(int k,int n) { int j; if(k>n) print(n); else { for(j=1;j<=n;j++) //试探第k行的每一个列 { if(find(k,j)) { q[k] = j; place(k+1,n); //递归总是在成功完成了上次的任务的时候才做下一个任务 } } } } int main() { int n; printf("请输入皇后的个数(n<=20),n=:"); scanf("%d",&n); if(n>20) printf("n值太大,不能求解!\n"); else { printf("%d皇后问题求解如下(每列的皇后所在的行数):\n",n); place(1,n); //问题从最初状态解起 printf("\n"); } system("pause"); return 0; }
评论
    相关推荐
    • 最近点对.zip
      已知平面上有n个点,点为二维数组,求平面上的最近点对
    • 实验2_分治法求最近点对问题.zip
      1. 对于平面上给定的N个点,给出所有点对的最短距离,即,输入是平面上的N个点,输出是N点中具有最短距离的两点。 2. 要求随机生成N个点的平面坐标,应用蛮力法编程计算出所有点对的最短距离。 3. 要求随机生成N个...
    • 分治法最近对问题.zip
      可以实现最近对问题 分治法的求解 程序已经验证
    • 平面最近点对.zip
      分治算法练习,使用分治算法实现计算平面最近点对距离。子问题将平面划分为左右两部分分开计算最短距离,再在中间条带中找是否有更近点对。
    • 分治法 解 平面最接近点对问题
      C++ 课程教师给的代码,用于解决平面最接近问题
    • 平面上n个点之间最近点对问题
      算法导论实验:利用分治法求平面上n个点最近点对问题,压缩包内附python源代码和实验报告以及详细时间复杂度分析。
    • test.zip
      1. 对于平面上给定的N个点,给出所有点对的最短距离,即,输入是平面上的N个点,输出是N点中具有最短距离的两点。 2. 要求随机生成N个点的平面坐标,应用蛮力法编程计算出所有点对的最短距离。 3. 要求随机生成N个...
    • ConsoleApplication17.zip
      算法设计作业--分治策略求平面最近点对源码
    • 平面最近点对.rar
      平面最接近点对问题的源代码,使用分治算法
    • SIM800C_MQTT.rar
      使用SIM800C模块,使用MQTT协议,连接中国移动onenet平台,能实现数据的订阅、发布、存储等