یافتن آیتم با رنک بالاتر - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

یافتن آیتم با رنک بالاتر

0 امتیاز

سلام.

دوستان خواهش نظر بدید چطوری باید همچین مسئله ای را حل کنم.

یک لیستی داریم که آیتم های آن از id و یک distance در این مسئله distance کمتر یعنی بهتر حالا قصد داریم بهترین آیتم را پیدا کنیم.

یک نمونه از لیست

ID    distance
2        0.2 
0        0.1
2        0.3 
1        0.1
0        0.2 
0        0.5
2        0.1 
1        0.3
1        0.2 
0        0.4

 

idها در این مثال 0 , 1 , 2 هستند و تعداد ظاهر شدن آن می تونه بین 0 تا 10 متغیر باشه

سوال شده بهمن 11, 1392  بوسیله ی ماهان (امتیاز 58)   5 10 14

1 پاسخ

+1 امتیاز
 
بهترین پاسخ

این نمونه کد با c#.مطمئن نیستم که سوالتون رو درست متوجه شده باشم.

using System;
using System.Collections.Generic;

namespace Distance
{
	class pt
	{
		public double Value;
		public int Count;

		public override string ToString ()
		{
			return string.Format ("[pt: {0}/{1} = {2}]", Value, Count, Value / Count);
		}
	}

	class MainClass
	{
		public static void Main (string[] args)
		{
			List<Tuple<int,double>> input = new  List<Tuple<int, double>> ();
			input.Add (new Tuple<int, double> (1, 0.2));
			input.Add (new Tuple<int, double> (2, 0.5));
			input.Add (new Tuple<int, double> (2, 0.2));
			input.Add (new Tuple<int, double> (2, 0.1));
			input.Add (new Tuple<int, double> (0, 0.2));
			input.Add (new Tuple<int, double> (0, 0.4));
			input.Add (new Tuple<int, double> (0, 0.1));
			input.Add (new Tuple<int, double> (0, 0.1));
			input.Add (new Tuple<int, double> (1, 0.4));
			input.Add (new Tuple<int, double> (2, 0.1));
			input.Add (new Tuple<int, double> (2, 0.2));
			input.Add (new Tuple<int, double> (1, 0.3));
			input.Add (new Tuple<int, double> (0, 0.5));
			input.Add (new Tuple<int, double> (2, 0.1));
			input.Add (new Tuple<int, double> (1, 0.2));
			input.Add (new Tuple<int, double> (0, 0.6));
			input.Add (new Tuple<int, double> (2, 0.1));
			Dictionary<int, pt> values = new Dictionary<int, pt> ();
			foreach (var v in input) {
				if (!values.ContainsKey (v.Item1))
					values.Add (v.Item1, new pt ());
				values [v.Item1].Count++;
				values [v.Item1].Value += Math.Sqrt (v.Item2);
			}
			foreach (var v in values) {
				Console.WriteLine ("{0}:\t{1}", v.Key, v.Value.ToString ());
			}
		}
	}
}

 

پاسخ داده شده بهمن 11, 1392 بوسیله ی FastCode (امتیاز 602)   1 2 11
انتخاب شد اسفند 29, 1392 بوسیله ی BlueBlade
...