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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

两个数之间的最短路径问题

發(fā)布時(shí)間:2024/9/30 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 两个数之间的最短路径问题 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題:給定兩個(gè)整數(shù)a和b,這兩個(gè)數(shù)的取值均在【-2000,2000】區(qū)間中。把對(duì)a進(jìn)行一系列操作得到b的過程稱為a到b的路徑,可選操作包括:加12、減12、加7、減7、加5、減5。例如-5至19的的一條路徑為(-5,7,19)。現(xiàn)要求編寫程序,對(duì)任何a和b,求a至b的最短路徑。


可以知道1有 5 5 5 -7 -7組成

f(1) =?5 5 5 -7 -7

求b-a的差值 c


n12 = c/12

n7 = c%12/7

n5 = c%12%7/5

最后剩下要組合的數(shù)就是1 -4之間的數(shù)了

因?yàn)槲覀冎岸际前凑障燃哟髷?shù)的原則,所以在組合1-4之前,路徑都是最短的

4*f(1)就會(huì)出現(xiàn)有8個(gè)-7,然后拿n12個(gè)12去抵消-7得5,這樣就消去兩個(gè)數(shù),增加一個(gè)數(shù),


上面的算法有錯(cuò)誤:

可能出現(xiàn)的組合只能是

12,5(5的數(shù)量要小于12)

12,7(7的數(shù)量要小于12)

5 ,-7(-7的數(shù)量要小于5)

-5, 7(-5的數(shù)量要小于7,要么7個(gè)數(shù)小于5)


http://blog.csdn.net/gogdizzy/article/details/6563626


/** * 用5,7,12加減運(yùn)算,最少步驟到大n * gogdizzy@gmail.com */ #include <stdio.h> #define abs(x) / ( (x^(x>>31))-(x>>31) ) int min_step( int N ) { int diff; int n5, n7, n12; int r5, r7, r12; unsigned tmp, total = unsigned (-1); // assign a very big num for( n5 = -6; n5 < 7; ++n5 ) { diff = N - 5 * n5; n7 = diff / 7; n12 = diff / 12; if( 12 * n12 + 5 * n5 == N ) { tmp = abs( n5 ) + abs( n12 ); if( total > tmp ) r5 = n5, r7 = 0, r12 = n12, total = tmp; } else if( 7 * n7 + 5 * n5 == N ) { if( n7 > -12 && n7 < 12 ) { tmp = abs( n5 ) + abs( n7 ); if( total > tmp ) r5 = n5, r7 = n7, r12 = 0, total = tmp; } } } for( n7 = -11; n7 < 12; ++n7 ) { n12 = ( N - 7 * n7 ) / 12; if( 7 * n7 + 12 * n12 == N ) { tmp = abs( n7 ) + abs( n12 ); if( total > tmp ) r5 = 0, r7 = n7, r12 = n12, total = tmp; } } printf( "%d = (%d) * 5 + (%d) * 7 + (%d) * 12/ntotal:%d/n", N, r5, r7, r12, total ); return total; } int main() { int n; scanf( "%d", &n ); min_step( n ); return 0; }

總結(jié)

以上是生活随笔為你收集整理的两个数之间的最短路径问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。