Pair sums (how to avoid duplication?)

3 ビュー (過去 30 日間)
Shiyun Li
Shiyun Li 2020 年 4 月 23 日
回答済み: Deepak Gupta 2020 年 4 月 23 日
Hi I try to print pairs of number has the sum 12 in the input matrix, but what can I do to aviod duplication? for example if 3 9 is doesn't need to print 9 3. Also what can I do if I always want the small number at the front?
Here is my code
%print every set of number that sum to target value t
clear;clc;
%input an matrix
a=input('Enter a matrix:');
t=12;
%check the size of the matrix
[rows,cols]=size(a);
%loop through
for r=1:rows
for c=1:cols
for i=1:rows
for f=1:cols
if a(r,c)+a(i,f)==t
disp(a(r,c));
disp(a(i,f));
end
end
end
end
end
  3 件のコメント
Shiyun Li
Shiyun Li 2020 年 4 月 23 日
%print every set of number that sum to target value t
clear;clc;
%input an matrix
a=input('Enter a matrix:');
%check the size of the matrix
[rows,cols]=size(a);
%loop through
for r=1:rows
for c=1:cols
for i=1:rows
for f=1:cols
if a(r,c)+a(i,f)==12
fprintf('%d,%d\n',a(r,c), a(i,f));
end
end
end
end
end
%command window
Enter a matrix:[1 3 5 4 6 2 9 12 7 11 8 0]
1,11
3,9
5,7
4,8
6,6
9,3
12,0
7,5
11,1
8,4
0,12
Shiyun Li
Shiyun Li 2020 年 4 月 23 日
Here is one of the example, sorry I can explain more clearly. What I want is the pairs of number only print once if 3, 9 is printed then 9,3 will not. And what can I do if I want the smaller number at the front when I print the pair? Thank you.

サインインしてコメントする。

回答 (1 件)

Deepak Gupta
Deepak Gupta 2020 年 4 月 23 日
Seems like you have already found the numbers which add up to the required number.
Now Save these numbers in an array with 2 columns. Then swap the column entries if column 1 element is larger than 2nd.
for i = 1:size(A, 1)
if(A(i, 1)>A(i, 2))
temp = A(i, 2);
A(i, 2) = A(i,1);
A(i,1) = temp;
end
end
Now to remove the repititive rows
A=unique(A,'rows')

カテゴリ

Help Center および File ExchangeProgramming についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by