|
发表于 2006-7-30 17:55:03
|
显示全部楼层
需要生成S吗?
楼主的意思是: 集合P中的元素 是 集合S中的n个最大值。 那么求P的元素时直接从A、B中直接获取就可以了。
修正: 下面的方法错了,太想当然了
- /* 假定A和B已经按降序排列,即A[0]最大, A[n-1]最小,B亦然。从A、B求P */
- #include <stdio.h>
- void getp(int A[], int B[], int P[], int n)
- {
- int i=0;
- int a,b;
- while(i<n)
- {
- P[3*i]=A[i]+B[i];
- if(i+1<n)
- {
- a=A[i]+B[i+1];
- b=B[i]+A[i+1];
- P[3*i+1]=(a>b?a:b);
- P[3*i+2]=(a>b?b:a);
- }
- ++i;
- }
- }
- int main()
- {
- const int n=5;
- int A[]={22,12,8,4,3,1};
- int B[]={17,9,6,5,3,2};
- int P[n];
- getp(A,B,P,n);
- int i;
- for(i=0;i<n;i++)printf("%d\n",P[i]);
-
- }
复制代码
输出:~ $ ./a.out
39
31
29
21
18 |
|