將1-9這9個數字組合成3個三位數,要求第2個三位數是第乙個三位數的2倍,第3個三位數是第乙個三位數的3倍。找出所有的可能方案。
如果直接求出所有符合要求的排列組合的數那效率會特別低,所以最基本的思路就是先用便捷的方法得到滿足一部分要求的數,再篩選。
組合的三位數的範圍是111-999(重複的、含0的最後排除)
那麼第乙個數的範圍就是111-333
遍歷111-333,求出三個數字的每一位數字
排除掉含重複陣列和含數字0的方案
程式:
%
% method1: 遍曆法
for i=
123:
333% 第乙個數的範圍
check
(i);
end
function check
( data1 )
%check 此處顯示有關此函式的摘要
% 此處顯示詳細說明
a=zeros(1
,9);
% 提取9個資料
% 第乙個數字ia(
1)=mod
(data1,10)
;% 取餘數,個位a(
2)=mod
(floor
(data1/10)
,10);
% 十位a(
3)=mod
(floor
(data1/
100),10
);% 百位
% 第二個數字2*ia
(4)=
mod(
2*data1,10)
;a(5
)=mod(
floor(2
*data1/10)
,10);
a(6)
=mod
(floor(2
*data1/
100),10
);% 第三個數字3*ia
(7)=
mod(
3*data1,10)
;a(8
)=mod(
floor(3
*data1/10)
,10);
a(9)
=mod
(floor(3
*data1/
100),10
);% 排列組合
for i=1:
8% 九個資料兩兩對比
for j =
(i +1)
:9if(
a(i)==a
(j)||
a(i)==0
||a(j)==0)
% 如果存在相等或者為0的資料,則退出
break
; end
end;
if(j <9)
% 迴圈結束
break
; end
end% 列印輸出
if i ==
8&& j ==
9% 全部遍歷結束則表示資料符合要求
fprintf
('方法1符合條件資料: a=%d,b=%d,c=%d\n'
, data1, data1*
2, data1*3)
;end
第二個方法參考了別人的。借助乙個110的初值為0陣列。
還是提取3個三位數的每一位,並在這個數的標號下置1,代表這個數字出現過。
如果每乙個陣列都出現過,那麼這個110的陣列就有9個1,1個0。
通過求和,陣列元素之和等於9,則表示9個數字各不相同。
同時需要排除數字為0的情況。
程式:
%
% method2: 格仔填充
for i=
123:
329
a=zeros(1
,10);
%1*10的陣列格仔
% 第乙個數
a(mod
(i,10)+
1)=1
;% 個位, 該序號位置填充為1a(
mod(
floor
(i/10),
10)+1
)=1;
% 十位
a(mod
(floor
(i/100),
10)+1
)=1;
% 百位
j=i*2;
a(mod(j,10)
+1)=
1;a(
mod(
floor
(j/10),
10)+1
)=1;
a(mod(
floor
(j/100),
10)+1
)=1;
k=i*3;
a(mod(k,10)
+1)=
1;a(
mod(
floor
(k/10),
10)+1
)=1;
a(mod(
floor
(k/100),
10)+1
)=1;
s=sum(a)
;% 十個數求和
if(s==9&&
a(1)
~=1)
% s==
9的話表示有9個不同的數字,a(
1)==1等價於數字0
fprintf
('方法2符合條件資料: a=%d,b=%d,c=%d\n'
, i, j,k)
; end
end
一道演算法題
兩個燒杯,乙個放糖乙個放鹽,用勺子舀一勺糖到鹽,攪拌均勻,然後舀一勺混合 物會放糖的燒杯,問你兩個燒杯哪個雜質多?一樣多吧 對的 為啥?是不是因為 糖和鹽本來就是均勻的 因為,就算不攪拌均,你放一勺過去,那邊放一勺不含雜質的過來,那麼都是一勺雜之 如果攪拌均勻的話也是一樣 小依 21 45 32 也...
一道演算法題
1.上午主要做了對翻譯任務的劃分,下午把 翻譯完畢。2.明天要講的演算法題 對乙個集合,求出其連續元素組成的子集中,和最大的子集 我對這道題的理解是 1 若集合中最小值大於0,意味著所有的都大於0,則最大的子集和,為所有值加起來 2 若集合中最大值小於0,意味著所有的都小於0,則最大的子集和,為集合...
一道演算法題
include using namespace std const int size 5 int max sub array const int a,int n,int m int max matrix const int a size int row,int col,int subsize int...