- 論壇徽章:
- 0
|
原帖由 s5unty 于 2006-11-13 22:43 發(fā)表
不行阿,我理解后用c實(shí)現(xiàn),結(jié)果不正確,可能是我理解有問題?
- #include <iostream>
- using namespace std;
- void change(int* a, int* b) {
- int t = *b;
- *a = t;
- *b = * ...
復(fù)制代碼
完整的程序是這樣的,可以參考一下
- #include <stdio.h>
- #include <math.h>
- #define N 10
- void ary_init(int a[], int b[]){ //初始化數(shù)組
- int i;
- for (i=0; i<N; i++){
- a[i] = rand()%100;
- }
- for (i=0; i<N; i++){
- b[i] = rand()%100;
- }
- return;
- }
- long sum(int a[]){ //數(shù)組求和
- int i;
- int s;
- for (s=0,i=0; i<N; i++){
- s += a[i];
- }
- return s;
- }
- void change(int *a, int *b){ //數(shù)組元素交換
- int tmp;
- tmp = *a;
- *a = *b;
- *b = tmp;
- return;
- }
- void prt_ary(int a[], int b[]){ //列印兩數(shù)組元素及各自元素和
- int i;
- for(i=0; i<N; i++){
- printf("%5d ", a[i]);
- }
- printf("\n");
- for(i=0; i<N; i++){
- printf("%5d ", b[i]);
- }
- printf("\n");
- printf("%d\n", sum(a));
- printf("%d\n", sum(b));
- }
- int main(){
- int i;
- int j;
- int a[N];
- int b[N];
- int a_sum;
- int b_sum;
- int tmp;
- int ab_diff;
- ary_init(a,b);//初始化
- prt_ary(a, b);//列印當(dāng)前數(shù)組狀態(tài)
- ab_diff = abs(sum(a)-sum(b));
- for (i=0; i<N; i++){//交換數(shù)組元素
- for (j=0; j<N; j++){
- change(a+i, b+j);
- if (abs(sum(a)-sum(b)) > ab_diff){
- change(b+j, a+i);
- }
- else{
- ab_diff = abs(sum(a)-sum(b));
- }
- }
- }
- prt_ary(a, b);//列印交換后數(shù)組狀態(tài)
- getch();
- }
復(fù)制代碼
[ 本帖最后由 greensky_34 于 2006-11-14 00:30 編輯 ] |
|