給定若干個正整數 a[0],a[1],……,a[n-1],從中選出若干個數,使他們的和恰好為k,要求找出選擇元素個數最少的解。
#include #include #include using namespace std;
listnumlist;
int mincount = -1;
void find_seq(int sum, int index, int * value, list& seq)
if(mincount == -1 || n < mincount)
printf("\t(一共%d個元素)\n",n);
}seq.push_back(value[index]);
find_seq(sum-value[index], index-1, value, seq); //放value[index]
seq.pop_back();
find_seq(sum, index-1, value, seq); //不放value[index]
}int main()
; int n = sizeof(value)/sizeof(value[0]);
printf("正整數集合為::");
for(int i = 0; i < n; ++i)
printf("\n請輸入k的值:");
scanf("%d", &k);
printf("可能的序列如下:\n");
find_seq(k, n-1, value, seq);
if(mincount == -1)
else
return 0;
}
會不定期進行更新,歡迎關注
求n 中因子k的個數
思路 求n的階乘某個因子k的個數,如果n比較小,可以直接算出來,但是如果n很大,此時n 超出了資料的表示範圍,這種直接求的方法肯定行不通。其實n 可以表示成統一的方式。n km m a 其中k是該因子,m n k,a是不含因子k的數的乘積 下面推導這個公式 n n n 1 n 2 3 2 1 k 2...
7 給定n個序列,求相鄰的k個數之和為最大
1 問題描述 給定 n個數,求相鄰的 k個數之和為最大。要求給出複雜度較小的一種演算法 再解決這個問題前,先了解一下類似的常見問題。2 給定一串數字 可正可負的 int,放在陣列 num裡 要求找到起始位置 start 和終止位置 end,使得從 start 位置到end 位置的所有數字之和最大,返...
求已知N個數中第k小的數
本來今天想寫的是 面試記 八一八hr姐姐和面試官叔叔。但聊到面試難免要聊面試題,而演算法題自是其重中之重。為了日後能專心地八面試官,今天就先說說這個演算法。本篇涉及專業知識,外行止步,發生危險概不負責。問題 random select 求已知n個數中第k小的數。k 先排序再取數的做法需要o n lo...