日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

蛮力算法百元百鸡java_每日一算法:百元百鸡

發布時間:2025/3/19 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 蛮力算法百元百鸡java_每日一算法:百元百鸡 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

100元買100只,題目:公雞5元一只、母雞3元一只、小雞1元三只

求100元買一百只,各可以買幾只

三個變量:公雞數量為 x 母雞數量為 y 小雞數量為 z

滿足條件:

①:x+y+z=100

②:5x+3y+z/3=100

以上為計算題目得出方程

/**

* 公雞5元一只、母雞3元一只、小雞1元三只

* 求100元買一百只,各可以買幾只

* 三個變量:公雞數量為 x 母雞數量為 y 小雞數量為 z

* 滿足條件:x+y+z=100 5x+3y+z/3=100

* 以上為計算題目得出方程

*/

void bj(int amount, int num) {

int x, y, z = 0;

// 公雞數量

for (x = 0; x <= num; x++) {

// 母雞數量

for (y = 0; y <= num; y++) {

// 小雞數量

z = num - x - y;

// 滿足條件的

if (z % 3 == 0 && x * 5 + y * 3 + z / 3 == amount) {

printf("公雞:%d,母雞:%d,小雞:%d\n", x, y, z);

}

}

}

}

int main(){

bj(100,100);

return 0;

}

以上不是最優的辦法,因為最外層循環了 num 次,第二層循環也循環了 num次,這里可以得到一部分優化

void bj(int amount, int num) {

int x, y, z = 0;

// 公雞數量

for (x = 0; x <= num / 5; x++) {

// 母雞數量

for (y = 0; y <= num / 3; y++) {

// 小雞數量

z = num - x - y;

// 滿足條件的

if (z % 3 == 0 && x * 5 + y * 3 + z / 3 == amount) {

printf("公雞:%d,母雞:%d,小雞:%d\n", x, y, z);

}

}

}

}

int main() {

bj(100, 100);

return 0;

}

這樣的優化我們不必需要兩個循環都循環num次了,只要循環符合amount的最大數,這樣可以避免過多不必要的循環。

這樣就是最優的解法了嗎?當然不是,我們這里可以看到時間復雜度是:O(N2),那我們有沒有辦法優化到O(N)呢?

我們來看看結果:

公雞:0,母雞:25,小雞:75

公雞:4,母雞:18,小雞:78

公雞:8,母雞:11,小雞:81

公雞:12,母雞:4,小雞:84

我們來找一下規律,在這四條結果中,公雞的規律是4的倍數,母雞是7的遞減,小雞是3的遞增。

我們還記得在一開始的時候提到的方程組:

①:x+y+z=100

②:5x+3y+z/3=100

上面兩個方程組,有三個未知變量,為不定方程組

令②×3-①得:7x+4y=100

由 x+y+z = 100和5x + 3y + z/3 = 100可得7x+4y=100

則y = 25 -(7/4)X

再令x = 4k,則有y = 25 - 7k,繼而z = 75 + 3k

因為 0 =< z <= 100,所以k的可能取值是0,1,2,3

void bj(int amount, int num) {

int x, y, z = 0;

for (int k = 1; k <= 3; k++) {

x = 4*k;

y = 25-7*k;

z = 75+3*k;

printf("公雞:%d,母雞:%d,小雞:%d\n", x, y, z);

}

}

int main() {

bj(100, 100);

return 0;

}

以上的時間復雜度就可以為O(N)

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的蛮力算法百元百鸡java_每日一算法:百元百鸡的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。