print outnum到标准输出流样本输入5、10、6、8样本输出4



考虑一个非零正整数inarr的数组。根据以下逻辑识别并打印数字输出:

·在可以顺序排列inarr中整数的每种可能方式中,识别相邻值的最大绝对差

o最后一个和第一个整数是相邻的

·打印输出数值,上确定的最大差异的最小值

输入:

第一行表示数组inarr,其元素由","(逗号(分隔

从标准输入流读取输入

输出:

将输出编号打印到标准输出流

样本输入样本输出说明

5,10,6,8 4

对于给定的inarr,整数可以排列的所有可能方式的相邻值的最大绝对差如下:

5,10,6,8:

5-10=5à绝对最大差值

10-6=4

6-8=2

8-5=3

同样,对于其他可能的方式:

5,10,8,6-绝对最大差值=5

5,6,8,10-绝对最大差值=5

5,6,10,8-绝对最大差值=4

5,8,6,10-绝对最大差值=5

5,8,10,6-绝对最大差值=4

10,5,6,8-绝对最大差值=5

10,5,8,6-绝对最大差值=5

10,6,5,8-绝对最大差值=4

10,6,8,5-绝对最大差值=5

10,8,6,5-绝对最大差值=5

10,8,5,6-绝对最大差值=4

6,5,10,8-绝对最大差值=5

6,5,8,10-绝对最大差值=4

6,8,5,10-绝对最大差值=5

6,8,10,5-绝对最大差值=5

6,10,5,8-绝对最大差值=5

6,10,8,5-绝对最大差值=4

8,5,6,10-绝对最大差值=4

8,5,10,6-绝对最大差值=5

8,6,5,10-绝对最大差值=5

8,6,10,5-绝对最大差值=5

8,10,5,6-绝对最大差值=5

8,10,6,5-绝对最大差值=4

最大差值之间的最小值为4

这可能对有用

def permutation(lst):
if len(lst) == 0:
return []
if len(lst) == 1:
return [lst]
l = []
for i in range(len(lst)):
m = lst[i]
remLst = lst[:i] + lst[i+1:]
for p in permutation(remLst):
l.append([m] + p)
return l
data = [5,10,6,8]
got = []
for a in permutation(data):
result = []
for i in range(len(a)+1):
if i > len(a)/2:
result.append(abs(a[len(a)-1] - a[0]))
else:
result.append(abs(a[i] - a[i+1]))
max_value = max(result)
got.append(max_value)
print(list(set(sorted(got)))[0])
int main()
{
vector<int> vect = {5, 10, 6, 8};
sort(vect.begin(), vect.end());
int n = vect.size();
int mid = n / 2;
reverse(vect.begin() + mid, vect.end());
for (int i = 0; i < n; i++)
cout << vect[i] << " ";
cout << endl;
int maxx = INT_MIN;
for (int i = 1; i < vect.size(); i++)
{
maxx = max(maxx, abs(vect[i] - vect[i - 1]));
}
cout << maxx << endl;
return 0;
}
package com.company;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String [] str = bf.readLine().split(",");
int arr[]  = new int[str.length+1];
for (int i=0;i<str.length;i++){
arr[i] = Integer.parseInt(str[i]);
}
for (int i=0;i< str.length;i++){
int maxdif = 0;
int diff =0;
diff = arr[i] - arr[i+1];
maxdif = diff;
checkmax(Math.abs(diff));
System.out.println(Math.abs(maxdif));

//      5,10,6,8
}
}
public static int checkmax(int diff){
int []num = new int[200];
while (0<diff)
System.out.println(num[]);
return 0;
}
}

下面的代码应该可以解决这个问题。

CCD_ 1返回一个数组的相邻数的最大绝对差。

minMaxAbsDiff()在数组的所有排列上迭代,并返回最小的最大绝对差。

import itertools
def maxAbsDiff(arr):
max = 0
for i in range(len(arr)-1):
diff = abs(arr[i+1] - arr[i])
if diff > max:
max = diff
diff = abs(arr[len(arr)-1] - arr[0])
if diff > max:
max = diff
return max

def minMaxAbsDiff(arr):
min = -1
permutations = list(itertools.permutations(arr))
for i in range(len(permutations)):
diff = maxAbsDiff(permutations[i])
if (min < 0) or (diff < min):
min = diff
return min


def input_intArr():
str_in = input()
str_arr = [x.strip() for x in str_in.split(",")]
arr = []
for i in range(len(str_arr)):
arr.append(int(str_arr[i]))
return arr

print(minMaxAbsDiff(input_intArr()))

相关内容

最新更新