给定序列{1,2,3,4,5,6}和整数M=8,就存在2+6=8与3+5=8的例子。
#include<cstdio>
const int maxn = 90;
int main(){
int a[6]={1,2,3,4,5,6};
int j=5,m=8,i=0;
while(i<j){
if(a[i]+a[j]==8){
printf("%d %d\n",i,j);
i++;
j--;
}else if(a[i]+a[j]<m) {
i++;
}else{
j--;
}
}
return 0;
}
把两个递增的序列合并成一个
#include<stdio.h>
const int maxn = 20;
int merge(int a[],int b[],int c[],int n,int m){
int i=0,j=0,index=0;
while(i<n&&j<m){
if(a[i]<b[j]){
c[index++]=a[i++];
}else{
c[index++]=b[j++];
}
}
while(i<n){
c[index++]=a[i++];
}
while(j<m){
c[index++]=a[j++];
}
for(int i=0;i<m+n;i++){
printf("%d ",c[i]);
}
}
int main(){
int a[6]={2,4,7,8,9,10},b[6]={1,2,3,4,5,6},c[maxn];
merge(a,b,c,6,6);
}