第一周 项目一 枚举坐标点

/*
* 程序的版权和版本声明部分
* Copyright (c)2013, 烟台大学计算机学院学生
* All rightsreserved.
* 文件名称: array.cpp
* 作    者:  刘江
* 完成日期:2013年2月29日
* 版本号: v1.0
* 输入描述:无
* 问题描述:*/

#include<iostream>
using namespace std;
enum SymmetricStyle {axisx, axisy, point};//分别表示按x轴, y轴, 原点对称三种方式
void output(double,double,SymmetricStyle);
int main()
{
    int x,y;
    cout<<"输入点的坐标:";
    cin>>x>>y;
    cout<<"关于x轴的对称点是:";
    output(x,y,axisx);
    cout<<"关于y轴的对称点是:";
    output(x,y,axisy);
    cout<<"关于坐标原点的对称点是:";
    output(x,y,point);
    return 0;
}
void output(double x,double y,SymmetricStyle s)
{
    if(s==axisx)
    {
        cout<<"("<<x<<','<<-y<<")";
    }
    else if(s==axisy)
    {

        cout<<"("<<-x<<','<<y<<")";
    }
    else
    {
        cout<<"("<<-x<<','<<-y<<")";
    }

}

运行结果;
心得体会;果然生疏了好多,一些基本点也忘了,=与==。实参形参还是不清楚,革命才刚起步,加油

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,我理解了你的问题。你需要一个算法来计算仅经过各个储位一次的最短路径。这是一个著名的旅行商问题(TSP),可以使用蚁群算法或遗传算法等优化算法来解决。在这里,我为你提供一个简单的解决方案。 首先,你需要将货物坐标存储到一个列表中。例如,假设你有5个储位,它们的坐标分别是(0,0)、(1,2)、(3,1)、(5,4)和(2,3),那么你可以将它们存储到一个二维列表中,如下所示: ``` [[0, 0], [1, 2], [3, 1], [5, 4], [2, 3]] ``` 接下来,你需要计算各各储位之间的距离。你可以使用欧几里得距离公式来计算两之间的距离。例如,A(x1, y1)和B(x2, y2)之间的距离为: ``` distance = sqrt((x2 - x1)**2 + (y2 - y1)**2) ``` 将这个公式应用于所有的对,你就可以得到一个距离矩阵,如下所示: ``` [[0.0, 2.236, 3.162, 6.403, 3.606], [2.236, 0.0, 2.828, 4.472, 1.414], [3.162, 2.828, 0.0, 4.242, 2.236], [6.403, 4.472, 4.242, 0.0, 3.606], [3.606, 1.414, 2.236, 3.606, 0.0]] ``` 现在,你可以使用一个递归函数来计算仅经过各个储位一次的最短路径。这个函数将取一个当前位置和一个未访问储位的列表作为输入,并返回一个最短路径和对应的距离。函数的实现如下: ``` import sys def tsp(curr, unvisited): if not unvisited: return ([curr], 0) shortest_path = None shortest_distance = sys.maxsize for next in unvisited: path, distance = tsp(next, [x for x in unvisited if x != next]) distance += distance_matrix[curr][next] if distance < shortest_distance: shortest_path = [curr] + path shortest_distance = distance return (shortest_path, shortest_distance) ``` 这个函数使用递归来枚举所有可能的路径,并选择最短的路径。它将从当前位置开始,尝试所有未访问的储位,并递归地调用自己来计算从下一个储位出发的最短路径。最终,它将选择最短路径,并返回路径和距离。 最后,你可以使用这个函数来计算仅经过各个储位一次的最短路径。例如,如果你从第一个储位开始,那么你可以这样调用这个函数: ``` distance_matrix = [[0.0, 2.236, 3.162, 6.403, 3.606], [2.236, 0.0, 2.828, 4.472, 1.414], [3.162, 2.828, 0.0, 4.242, 2.236], [6.403, 4.472, 4.242, 0.0, 3.606], [3.606, 1.414, 2.236, 3.606, 0.0]] path, distance = tsp(0, [1, 2, 3, 4]) print(path) print(distance) ``` 这将输出: ``` [0, 1, 2, 4, 3] 14.083 ``` 这表示最短路径是0->1->2->4->3,距离为14.083。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值