亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 C# 中創建 Pair 類型 (Value,Value) 的列表

在 C# 中創建 Pair 類型 (Value,Value) 的列表

C#
互換的青春 2023-08-20 14:55:01
我想創建一些 int 值的列表對,例如(3,4), (5,4), (5,1)....(n,n)然后將每個與單個目標匹配,例如(1,1)我需要將列表的每個值與目標(1,1)進行比較,以便它應該打印最接近(1,1)的點預期結果。(3,4)最近的是什么最近的意思是,假設我們有數字 4,5,6,7,8,我想找到最接近 12 的數字,那么答案將是 8,因為需要 4 才能到達 12,但 4+n 從其他數字移動到 12 ,所以與單個值不同,我有一對值 (n,n).... 并與 (n,n) 進行比較我嘗試過使用二維數組positions = new int[3][,]  {     new int[,] { {3,4} },     new int[,]{ {5,4}},      new int[,] { {5,1} } };這給了我3,45,45,1現在我需要將每個值與 (1,1) 進行比較,但我不知道任何正確的數據結構,通過它我可以輕松存儲我的列表并將每個值與 (1,1) 進行比較。請幫忙
查看完整描述

2 回答

?
尚方寶劍之說

TA貢獻1788條經驗 獲得超4個贊

C# 7 有元組,我想您正在尋找它!


例如元組列表:


var positions = new List<(int x, int y)>

{

    (3,4),

    (5,4),

    (5,1)

};


您可以找到“最近的”,例如如下所示:


(int x, int y) value = (1, 1);

var closest = positions.OrderBy(p => (p.x - value.x) + (p.y - value.y)).First(); // finds (5,1)



查看完整回答
反對 回復 2023-08-20
?
慕的地10843

TA貢獻1785條經驗 獲得超8個贊

我假設這些點是平面上的點,我們可以使用畢達哥拉斯定理來獲得兩點之間的距離。

有了這個假設,我將創建一個新類來保存 x/y 位置數據和一個DistanceBetween運行Pythagorean theorem.

static void Main(string[] args)

{

? ? List<Point> points = new List<Point>

? ? {

? ? ? ? new Point(3, 4),

? ? ? ? new Point(5, 4),

? ? ? ? new Point(5, 1)

? ? };


? ? Point closestPoint = points.OrderBy(point => point.DistanceFromPoint(new Point(1, 1))).FirstOrDefault();


? ? Console.WriteLine($"The closest point to 1,1 is {closestPoint.PosX},{closestPoint.PosY}");

? ? Console.ReadLine();

}


private class Point

{

? ? public Point(int posX, int posY)

? ? {

? ? ? ? PosX = posX;

? ? ? ? PosY = posY;

? ? }


? ? public int PosX { get; set; }

? ? public int PosY { get; set; }


? ? public double DistanceFromPoint(Point otherPoint)

? ? {

? ? ? ? return Math.Sqrt(Math.Pow((otherPoint.PosX - PosX), 2) + Math.Pow((otherPoint.PosY - PosY), 2));

? ? }

}


查看完整回答
反對 回復 2023-08-20
  • 2 回答
  • 0 關注
  • 343 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號