把整数分解为连续整数之和(难度:normal 注意优化)


输入:35
输出: 2,3,4,5,6,7,8
5,6,7,8,9
17,18

以上都是连续的整数,也许大家第一想到的是穷举法,呵呵 ,大家可以先试试

下面给出自己的算法

Code:
  1. #include<stdio.h>
  2. intmain(void)
  3. {
  4. intn,nSum=1;//nSum保存总和
  5. scanf("%d",&n);//输入要分解的n
  6. for(intn1=1,n2=n1;n1<=n/2;)//n1为最开头的数,n2是最末尾
  7. {
  8. if(nSum<n)//总和偏小
  9. {
  10. n2++;//末尾加数
  11. nSum+=n2;
  12. }
  13. elseif(nSum>n)//总和偏大
  14. {
  15. nSum-=n1;//开头删数
  16. n1++;
  17. }
  18. else//if(nSum==n)//相等就输出结果
  19. {
  20. for(intt=n1;t<=n2;t++)
  21. {
  22. printf("%d,",t);
  23. }
  24. printf("/n");
  25. n2++;//末尾加数,如果不加就会死循环
  26. nSum+=n2;//这步要小心
  27. }
  28. }
  29. return0;
  30. }

### pcl::Normal 的归一化处理 在 PCL(Point Cloud Library)中,`pcl::Normal` 是用于表示点云法线方向的数据结构,通常包含 `normal_x`、`normal_y`、`normal_z` 三个分量,表示法线向量的方向。为了确保法线向量的方向一致性并满足单位长度要求,通常需要对法线向量进行归一化处理。 归一化操作的数学方法是将向量除以其模长(即向量的欧几里得范数),使得最终向量的长度为1。该操作可以确保后续处理(如曲率估计、光照计算等)的准确性。 对 `pcl::Normal` 进行归一化处理的示例代码如下: ```cpp #include <pcl/point_types.h> #include <pcl/point_cloud.h> #include <pcl/visualization/pcl_visualizer.h> #include <cmath> int main() { // 创建一个包含法线的点云 pcl::PointCloud<pcl::Normal>::Ptr cloud_normals(new pcl::PointCloud<pcl::Normal>); cloud_normals->push_back(pcl::Normal(1.0f, 0.0f, 0.0f)); cloud_normals->push_back(pcl::Normal(0.0f, 2.0f, 0.0f)); cloud_normals->push_back(pcl::Normal(0.0f, 0.0f, 3.0f)); // 对每个法线向量进行归一化 for (auto& normal : *cloud_normals) { float length = std::sqrt(normal.normal_x * normal.normal_x + normal.normal_y * normal.normal_y + normal.normal_z * normal.normal_z); if (length > 0.0f) { normal.normal_x /= length; normal.normal_y /= length; normal.normal_z /= length; } } // 可视化归一化后的法线 pcl::visualization::PCLVisualizer viewer("Normalized Normals Viewer"); viewer.addPointCloud<pcl::Normal>(cloud_normals, "normals"); while (!viewer.wasStopped()) { viewer.spinOnce(100); } return 0; } ``` 上述代码中,首先定义了一个包含三个法线向量的点云,并通过遍历每个法线向量,计算其模长并执行归一化操作。最后使用 `pcl::visualization::PCLVisualizer` 显示归一化后的法线[^1]。 ### 法线归一化的应用场景 在实际应用中,法线归一化常用于以下场景: - **点云特征提取**:如FPFH、SHOT等描述子计算依赖单位长度的法线向量。 - **表面重建**:如泊松重建、移动最小二乘法(MLS)等算法需要法线方向一致且长度为1。 - **光照计算**:在点云渲染时,法线方向影响光照效果,因此必须归一化以保证一致性。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值