用linq。/* 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 */ class PointData { public int x { get; set; } public int y { get; set; } public int data { get; set; } }...var data = new List<PointData> { new PointData() { x = 0, y = 0, data = 0 }, new PointData() { x = 1, y = 0, data = 0 }, new PointData() { x = 2, y = 0, data = 0 }, new PointData() { x = 3, y = 0, data = 1 }, new PointData() { x = 0, y = 1, data = 0 }, new PointData() { x = 1, y = 1, data = 1 }, new PointData() { x = 2, y = 1, data = 0 }, new PointData() { x = 3, y = 1, data = 0 }, new PointData() { x = 0, y = 2, data = 0 }, new PointData() { x = 1, y = 2, data = 0 }, new PointData() { x = 2, y = 2, data = 1 }, new PointData() { x = 3, y = 2, data = 0 }, new PointData() { x = 0, y = 3, data = 0 }, new PointData() { x = 1, y = 3, data = 0 }, new PointData() { x = 2, y = 3, data = 0 }, new PointData() { x = 3, y = 3, data = 0 } }; //寻找距离3,3最近的点 var result = data.OrderBy(x => (x.x - 3) * (x.x - 3) + (x.y - 3) * (x.y - 3)).Where(x => x.data == 1).First(); Console.WriteLine("result is {0},{1}.", result.x, result.y);
非常感谢你的回答。。
我的意思是: arr[i,j] 矩形的意思 就是arr[i-1,j],arr[i+1,j],arr[i,j-1],arr[i,j+1],arr[i+1,j+1],arr[i+1,j-1],arr[i-1,j+1],arr[i-1,j-1]以上是第一圈,如果不满足继续下面一圈16个
我只想到用for循环,但是要遍历4条边,不知道怎么控制
求教下
0 0 0 1
0 1 0 0
0 0 1 0
0 0 0 0
*/
class PointData
{
public int x { get; set; }
public int y { get; set; }
public int data { get; set; }
}...var data = new List<PointData>
{
new PointData() { x = 0, y = 0, data = 0 },
new PointData() { x = 1, y = 0, data = 0 },
new PointData() { x = 2, y = 0, data = 0 },
new PointData() { x = 3, y = 0, data = 1 },
new PointData() { x = 0, y = 1, data = 0 },
new PointData() { x = 1, y = 1, data = 1 },
new PointData() { x = 2, y = 1, data = 0 },
new PointData() { x = 3, y = 1, data = 0 },
new PointData() { x = 0, y = 2, data = 0 },
new PointData() { x = 1, y = 2, data = 0 },
new PointData() { x = 2, y = 2, data = 1 },
new PointData() { x = 3, y = 2, data = 0 },
new PointData() { x = 0, y = 3, data = 0 },
new PointData() { x = 1, y = 3, data = 0 },
new PointData() { x = 2, y = 3, data = 0 },
new PointData() { x = 3, y = 3, data = 0 }
};
//寻找距离3,3最近的点
var result = data.OrderBy(x => (x.x - 3) * (x.x - 3) + (x.y - 3) * (x.y - 3)).Where(x => x.data == 1).First();
Console.WriteLine("result is {0},{1}.", result.x, result.y);
linq是怎么用的呀?没有碰到过,望指教。。