|
发表于 2006-8-2 17:36:23
|
显示全部楼层
Post by Iambitious
A + B[j] >= A + B[v] u >=i v >=j
P(3,1)=A[3]+B[1]>(5,1)=A[5]+B[1];
P(1,3)=A[1]+B[3]>(1,5)=A[1]+B[5];
这是肯定能确定的
但
P(3,1)和P(1,3),P(5,1)和P(1,5)怎么确定大小,横向和纵向这种对比是容易的。
我有一个笨的算法(如果数组中元素是非0的正短整数)
P[]中两个元素最小的相差值为1。
P[n+1] n最大应该为A[0]+B[0];(由于数组是从0开始编号)
但这个我编译始终有错,数组后面的一些元素总出错,不知道是什么原因,会不会是溢出了;
- #include <stdio.h>
- int main()
- {
- int p[191];
- int a[]={100,99,98,86,20,1};
- int b[]={90,29,14,7,5,2};
- int i,m,n,s;
- for (n=0;n<6;n++)
- {
- for (m=0;m<6;m++)
- {
- s=a[n]+b[m];
- p[s]=s;
- printf("s%d,%d\n",s,p[s]);
- }
- }
- for (i=0;i<191;i++)
- {
- printf("p%d,%d\n",i,p[i]);
- }
- return 0;
- }
复制代码 |
|