我有一组(X,Y)坐标,它将单位正方形划分为子矩形.假设我的坐标是 -
( x1, y1) ( x2, y2)
(0.0000,0.0000) (0.3412,0.4175)
(0.7445,0.0000) (1.0000,0.6553)
(0.7445,0.6553) (1.0000,1.0000)
(0.0000,0.6553) (0.7445,1.0000)
(0.3412,0.0000) (0.7445,0.4175)
(0.3412,0.4175) (0.7445,0.6553)
(0.0000,0.4175) (0.3412,0.6553)....etc (total 10,000 coordinates)
Run Code Online (Sandbox Code Playgroud)
作为一个例子,我只采集了16组数据,这些坐标分割我的方块,如下所示 -

类似框的定义
具有相似数量的邻居的那些盒子被认为是类似的盒子.对于方框[8]上方的图像,方框[13]等有4个最近邻居.所以他们被认为是类似的盒子.
下面的图片应该清楚 -

::我的问题::
从图像我们可以看到 -
对于方框[8],最近的方框是:
box(1)(有4个邻居)
框[4](也有4个邻居)
盒子[14](有4个邻居)
盒子[16](有4个邻居)
因此,在这种情况下,最近框的邻居之和= 4 + 4 + 4 + 4 = 16
再次为箱[13]最近的框是:
框[3](有6个邻居)
框[5](也有4个邻居)
盒子[6](有3个邻居)
框[12](有3个邻居)
因此,在这种情况下,最近框的邻居之和= 6 + 4 + 3 + 3 = 16
在这里,(类似框)框[8]和框[13] = 16 …
假设我有一组(X,Y)坐标为1000个盒子.
( x1, y1) ( x2, y2) Area
(0.0000,0.0000) (0.3412,0.4175) 0.1424
(0.7445,0.0000) (1.0000,0.6553) 0.1674
(0.7445,0.6553) (1.0000,1.0000) 0.0881
(0.0000,0.6553) (0.7445,1.0000) 0.2566
(0.3412,0.0000) (0.7445,0.4175) 0.1684
(0.3412,0.4175) (0.7445,0.6553) 0.0959
(0.0000,0.4175) (0.3412,0.6553) 0.0812 ....etc
Run Code Online (Sandbox Code Playgroud)
我想用c/c ++计算每个盒子相邻盒子的数量.我该怎么做?
例

在这张图片中,方框7的相邻方框总数为6,方框3为3.如何使用c ++计算它们?
使用新值进行编辑和更新
让我们尝试16个值 -
1 0.0000 0.0000 0.8147 0.1355
2 0.8147 0.0000 1.0000 0.1355
3 0.8147 0.1355 0.9058 0.8350
4 0.0000 0.1355 0.1270 0.9689
5 0.9058 0.1355 0.9134 0.2210
6 0.9058 0.8350 1.0000 1.0000
7 0.8147 0.8350 0.9058 1.0000
8 0.1270 0.1355 0.6324 0.3082
9 0.1270 …Run Code Online (Sandbox Code Playgroud) 这个问题类似于我之前提出的这个问题.但是我想找到相应盒子的区域,而不是只返回最近的盒子数量.
细节: 假设我有一组像这样的盒子坐标 -
#Rect x1 y1 x2 y2 area
1 0.0000 0.0000 0.8147 0.1355 0.1104
2 0.8147 0.0000 1.0000 0.1355 0.0251
3 0.8147 0.1355 0.9058 0.8350 0.0637
4 0.0000 0.1355 0.1270 0.9689 0.1058
5 0.9058 0.1355 0.9134 0.2210 0.0006
6 0.9058 0.8350 1.0000 1.0000 0.0155
7 0.8147 0.8350 0.9058 1.0000 0.0150
8 0.1270 0.1355 0.6324 0.3082 0.0873
9 0.1270 0.9689 0.8147 1.0000 0.0214
10 0.0000 0.9689 0.1270 1.0000 0.0040
11 0.9134 0.1355 1.0000 0.2210 0.0074
12 0.9134 …Run Code Online (Sandbox Code Playgroud) 假设我在一个文本文件中有一组1000个统计数据.其第一列表示索引的数量,第二列表示该值的值.索引可以重复,相应的值可以不同.我想计算索引的出现次数和每个索引的值的总和.
我编写了一个代码,它给出了索引出现的结果,但它没有给出相应的值总和.
例
假设我的文本文件有一组这样的数据 -
#index value
4 0.51
5 0.13
5 0.53
5 0.25
6 0.16
6 0.16
7 0.38
4 0.11
3 0.101
4 0.32
4 0.2 ... and more
Run Code Online (Sandbox Code Playgroud)
所以在这种情况下 -
指数4 出现 4次,相应的值之和 =(0.51 + 0.11 + 0.32 + 0.2)= 1.14
同样
指数5 出现 2次,值之和 =(0.13 + 0.53)= 0.66等.
我的守则
这是我的代码 -
#include <iostream>
#include <map>
#include <fstream>
using namespace std;
int main()
{
map<double,double> index;
double number,value;
double total;
ifstream theFile ("a1.txt");
while(theFile …Run Code Online (Sandbox Code Playgroud)