#include <bits/stdc++.h> int a[50]; void work(int p, int r) { if (p < r) { int i = p – 1, j, temp; for (j = p; j < r; j++) { if (a[j] >= a[r]) { i++; temp = a[i]; a[i] = a[j]; a[j] = temp; } } temp = a[i + 1]; a[i + 1] = a[r]; a[r] = temp; work(p, i); work(i + 2, r); } } int main( ) { int n, i, sum = 0; scanf("%d", &n); for (i = 0; i < n; i++) scanf("%d", &(a[i])); work(0, n – 1); for (i = 0; i < n – 1; i++) sum += abs(a[i + 1] – a[i]); printf("%dn", sum); return 0; } 输入: 10 23 435 12 345 3123 43 456 12 32 -100 输出:1
区块链毕设网qklbishe.com为您提供问题的解答
#include <bits/stdc++.h> int a[50]; void work(int p, int r) { if (p < r) { int i = p - 1, j, temp; for (j = p; j < r; j++) { if (a[j] >= a[r]) { i++; temp = a[i]; a[i] = a[j]; a[j] = temp; } } temp = a[i + 1]; a[i + 1] = a[r]; a[r] = temp; work(p, i); work(i + 2, r); } } int main( ) { int n, i, sum = 0; scanf("%d", &n); for (i = 0; i < n; i++) scanf("%d", &(a[i])); work(0, n - 1); for (i = 0; i < n - 1; i++) sum += abs(a[i + 1] - a[i]); printf("%dn", sum); return 0; }
该程序的具体流程如下:
主函数(main)首先从用户处接收一个整数n作为输入,然后接收n个整数并存储在数组a中。
调用函数work,该函数是解决最大间距问题的核心部分。该函数采用递归的方式,将数组a在[p, r]的范围内进行排序,使得相邻元素之间的差值尽可能大。
在work函数中,首先定义了一个i变量,初始值为p-1。然后从p开始遍历到r,如果发现a[j] >= a[r],就将a[j]和a[i+1]进行交换,并将i加1。这样,当遍历结束后,a[i+1]就是数组a在[p, r]范围内的最大值。
之后,将a[i+1]和a[r]进行交换,这样,a[i+1]就变成了数组a在[p, r]范围内的最小值。然后对[p, i]和[i+2, r]两个子数组分别进行同样的操作。
在main函数中,对数组a进行排序后,计算相邻元素之间的差值并累加到sum变量中,最后输出sum的值。
总的来说,这个程序的功能就是对给定的整数数组进行排序,使得相邻元素之间的差值尽可能大,并输出所有相邻元素之间的差值的绝对值之和。
以上就是关于问题#include <bits/stdc++.h> int a[50]; void work(int p, int r) { if (p < r) { int i = p – 1, j, temp; for (j = p; j < r; j++) { if (a[j] >= a[r]) { i++; temp = a[i]; a[i] = a[j]; a[j] = temp; } } temp = a[i + 1]; a[i + 1] = a[r]; a[r] = temp; work(p, i); work(i + 2, r); } } int main( ) { int n, i, sum = 0; scanf("%d", &n); for (i = 0; i < n; i++) scanf("%d", &(a[i])); work(0, n – 1); for (i = 0; i < n – 1; i++) sum += abs(a[i + 1] – a[i]); printf("%dn", sum); return 0; } 输入: 10 23 435 12 345 3123 43 456 12 32 -100 输出:1的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训
从业7年-专注一级市场
微信:btc9767
TELEGRAM :https://t.me/btcok9
具体资料介绍
web3的一级市场千万收益的逻辑
进群点我
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » #include <bits/stdc++.h> int a[50]; void work(int p, int r) { if (p < r) { int i = p – 1, j, temp; for (j = p; j < r; j++) { if (a[j] >= a[r]) { i++; temp = a[i]; a[i] = a[j]; a[j] = temp; } } temp = a[i + 1]; a[i + 1] = a[r]; a[r] = temp; work(p, i); work(i + 2, r); } } int main( ) { int n, i, sum = 0; scanf("%d", &n); for (i = 0; i < n; i++) scanf("%d", &(a[i])); work(0, n – 1); for (i = 0; i < n – 1; i++) sum += abs(a[i + 1] – a[i]); printf("%dn", sum); return 0; } 输入: 10 23 435 12 345 3123 43 456 12 32 -100 输出:1
微信:btc9767
TELEGRAM :https://t.me/btcok9
具体资料介绍
web3的一级市场千万收益的逻辑
进群点我
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » #include <bits/stdc++.h> int a[50]; void work(int p, int r) { if (p < r) { int i = p – 1, j, temp; for (j = p; j < r; j++) { if (a[j] >= a[r]) { i++; temp = a[i]; a[i] = a[j]; a[j] = temp; } } temp = a[i + 1]; a[i + 1] = a[r]; a[r] = temp; work(p, i); work(i + 2, r); } } int main( ) { int n, i, sum = 0; scanf("%d", &n); for (i = 0; i < n; i++) scanf("%d", &(a[i])); work(0, n – 1); for (i = 0; i < n – 1; i++) sum += abs(a[i + 1] – a[i]); printf("%dn", sum); return 0; } 输入: 10 23 435 12 345 3123 43 456 12 32 -100 输出:1
进群点我
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » #include <bits/stdc++.h> int a[50]; void work(int p, int r) { if (p < r) { int i = p – 1, j, temp; for (j = p; j < r; j++) { if (a[j] >= a[r]) { i++; temp = a[i]; a[i] = a[j]; a[j] = temp; } } temp = a[i + 1]; a[i + 1] = a[r]; a[r] = temp; work(p, i); work(i + 2, r); } } int main( ) { int n, i, sum = 0; scanf("%d", &n); for (i = 0; i < n; i++) scanf("%d", &(a[i])); work(0, n – 1); for (i = 0; i < n – 1; i++) sum += abs(a[i + 1] – a[i]); printf("%dn", sum); return 0; } 输入: 10 23 435 12 345 3123 43 456 12 32 -100 输出:1
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台-javagopython毕设 » #include <bits/stdc++.h> int a[50]; void work(int p, int r) { if (p < r) { int i = p – 1, j, temp; for (j = p; j < r; j++) { if (a[j] >= a[r]) { i++; temp = a[i]; a[i] = a[j]; a[j] = temp; } } temp = a[i + 1]; a[i + 1] = a[r]; a[r] = temp; work(p, i); work(i + 2, r); } } int main( ) { int n, i, sum = 0; scanf("%d", &n); for (i = 0; i < n; i++) scanf("%d", &(a[i])); work(0, n – 1); for (i = 0; i < n – 1; i++) sum += abs(a[i + 1] – a[i]); printf("%dn", sum); return 0; } 输入: 10 23 435 12 345 3123 43 456 12 32 -100 输出:1