我把磁道访问序号读入到一个数组中,然后通过第一次的For循环找出与当前磁道最近的磁道序号并输出了,但后面的循环该如何设置,因为第二次是从上一个序号算下一个最短路径
private void butTime_Click(object sender, EventArgs e)
{
string str1 = this.InputNumber.Text; //输入的磁道访问序列
string[] number1 = str1.Split(new char[] { ' ' });
int[] number2 = new int[number1.Length]; //将string类型转化为int类型
for (int i = 0; i < number1.Length; i++)
{
number2[i] = Convert.ToInt32(number1[i]);
} //当前磁头位置
int position = Convert.ToInt32(this.InputPosition.Text);
string output2 = "";
output2 += "当前磁头的位置:" + position.ToString();
int dis=Math.Abs(position - number2[0]);
int pos;
for (int i = 1; i < number2.Length; i++)
{
int n = Math.Abs(position - number2[i]);
if (n < dis)
{
dis = n;
pos = i;
output2 += "→" + number2[pos].ToString();
}
}
this.Output.Text = output2;
}以上是我写得一段程序,请高手看下,菜鸟请教了!
private void butTime_Click(object sender, EventArgs e)
{
string str1 = this.InputNumber.Text; //输入的磁道访问序列
string[] number1 = str1.Split(new char[] { ' ' });
int[] number2 = new int[number1.Length]; //将string类型转化为int类型
for (int i = 0; i < number1.Length; i++)
{
number2[i] = Convert.ToInt32(number1[i]);
} //当前磁头位置
int position = Convert.ToInt32(this.InputPosition.Text);
string output2 = "";
output2 += "当前磁头的位置:" + position.ToString();
int dis=Math.Abs(position - number2[0]);
int pos;
for (int i = 1; i < number2.Length; i++)
{
int n = Math.Abs(position - number2[i]);
if (n < dis)
{
dis = n;
pos = i;
output2 += "→" + number2[pos].ToString();
}
}
this.Output.Text = output2;
}以上是我写得一段程序,请高手看下,菜鸟请教了!
解决方案 »
- 送分题,一个简单的xml解析
- There was an error parsing the query
- 使用c#做分割视图
- 关于套接字的问题
- 关于数据绑定的问题,拜谢····
- 请问如何判断 toolbar 工具中用户点击了哪个按钮!
- DataGrid的enabled设置为false,再设置成ture后,为什么DataGrid的滚动条不见啦???
- 求职 .net 开发【北京】
- 最近,用VS.Net单步调试程序变得非常慢,CPU占用90%-100%,电脑的时钟都变慢了,怎么回事?
- 一个权限问题!
- C#Form中能不能显示Windows下的文件?
- 父页面使用showModalDialog方法弹出子页面时,如何使父页面的内容正常显示,而不是空白
string[] number1 = str1.Split(new char[] { ' ' });
int[] number2 = new int[number1.Length];
bool[] flags = new bool[number1.Length];//将string类型转化为int类型
for (int i = 0; i < number1.Length; i++)
{
number2[i] = Convert.ToInt32(number1[i]);
flags[i] = false;
}//当前磁头位置
int position = Convert.ToInt32(this.InputPosition.Text);
string output2 = "";
output2 += "当前磁头的位置:" + position.ToString();
for (int i = 0; i < number2.Length; i++)
{
int dis = int.MaxValue;
int pos = -1;
for (int j = 0; j < number2.Length; j++)
{
if (flags[j])
continue;
int n = Math.Abs(position - number2[j]);
if (n < dis)
{
dis = n;
pos = j;
}
}
output2 += "→" + number2[pos].ToString();
flags[pos] = true;
position = number2[pos];
}
this.Output.Text = output2;