作业帮 > 数学 > 作业

请问用C#语言怎么编写下面问题的程序啊?

来源:学生作业帮 编辑:作业帮 分类:数学作业 时间:2024/10/04 04:12:15
请问用C#语言怎么编写下面问题的程序啊?
假设数组a[]={18,9,10,6,15,-16,6,-9,7,-8,14,7,16,9,13,-17,18};
一共有17个元素,现在要求对该数组所有的第奇数个元素:9,6,-16,-9,-8,7,9,-17进行操作,
例如对于元素-16而言,如果前面的奇数元素都比它大,则这样操作:18+16,但是如果前面有一个奇数元素比它小,就要这样操作15+16.
对于其它奇数元素也是这种操作,注意这里的数组长度是我举例子定的,现实情况下数组长度不固定啊,可能很长,请问改怎么编写这种程序啊,想很久了,就是没有思路,
题意不明
“18+16” 18哪来的?(是数组中第一个元素 还是常量? 16哪来的 绝对值? 还是-(-16)?)
同理15+16也意义不明
再问: 18是数组的第一个元素,15是元素-16前面的紧邻元素,16是-(-16)
再答: 这样就理解了-w-因为正序操作数组会使原来的值改变  导致后续的判断错误 于是逆序的操作数组即可int[] a = {18,9,10,6,15,-16,6,-9,7,-8,14,7,16,9,13,-17,18};
for(int i=a.Length-1;i>1;i--){
if (i%2==1){
int prevMin = a.Take(i).Where((num,idx)=>idx%2==1).Min();
if (prevMin > a[i]) {
a[i] = a[0] - a[i];
} else if (prevMin < a[i]) {
a[i] = a[i-1] - a[i];
}
}
}中间使用了一大长串的linq语句是为了获取前i个元素中奇数元素最小的一个
后面的判断符合你的题意