昇順にソート済みで全ての要素が異なる配列から、与えられた和の値になるペアを全て出力するコードを書きたいです。
O(n)で実装したいのですが、以下のコードだと最大でも1つしかペアを出力できません。改善案、あるいは他のアルゴリズムがあれば教えていただきたいです。
C
1int main(void) 2{ 3 int i=0,j=4,sum; 4 int x[5]={1,3,4,6,10}; 5 6 scanf("%d",&sum); 7 8 for(i=0; i<5; ++i){ 9 printf("%d ",x[i]); 10 } 11 12 printf("\n"); 13 14 while(x[i]+x[j]<sum){ 15 ++i; 16 } 17 18 while(x[i]+x[j]>sum){ 19 --j; 20 } 21 22 if(x[i]+x[j]==sum){ 23 printf("(%d,%d)",x[i],x[j]); 24 } 25}
回答1件
あなたの回答
tips
プレビュー