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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

蛮力法

發(fā)布時間:2023/12/8 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 蛮力法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

蠻力法

  • 蠻力法概述
  • 蠻力法的基本應(yīng)用
    • 直接采用蠻力法的一般格式
    • 例1
    • 例2

蠻力法概述

蠻力法是一種簡單直接地解決問題的方法,通常直接基于問題的描述和所涉及的概念定義,找出所有可能的解。然后選擇其中的一種或多種解,若該解不可行則試探下一種可能的解。

使用蠻力法通常有如下幾種情況:
搜索所有的解空間:問題的解存在于規(guī)模不大的解空間中。
搜索所有的路徑:這類問題中不同的路徑對應(yīng)不同的解。
直接計算:按照基于問題的描述和所涉及的概念定義,直接進行計算。往往是一些簡單的題,不需要算法技巧的。
模擬和仿真:按照求解問題的要求直接模擬或仿真即可。

蠻力法的基本應(yīng)用

直接采用蠻力法的一般格式

在直接采用蠻力法設(shè)計算法中,主要是使用循環(huán)語句和選擇語句,循環(huán)語句用于窮舉所有可能的情況,而選擇語句判定當(dāng)前的條件是否為所求的解。

例1

編寫一個程序,輸出2~1000之間的所有完全數(shù)。所謂完全數(shù),是指這樣的數(shù),該數(shù)的各因子(除該數(shù)本身外)之和正好等于該數(shù)本身,例如:
6=1+2+3
28=1+2+4+7+14

先考慮對于一個整數(shù)m,如何判斷它是否為完全數(shù)。
從數(shù)學(xué)知識可知:一個數(shù)m的除該數(shù)本身外的所有因子都在1~m/2之間。算法中要取得因子之和,只要在1~m/2之間找到所有整除m的數(shù),將其累加起來即可。如果累加和與m本身相等,則表示m是一個完全數(shù),可以將m輸出。

void main() { int m,i,s;for (m=2;m<=1000;m++){ s=0;for (i=1;i<=m/2;i++)if (m%i==0) s+=i; //i是m的一個因子if (m==s)printf("%d ",m);}printf("\n"); }

例2

在象棋算式里,不同的棋子代表不同的數(shù),有以下算式,設(shè)計一個算法求這些棋子各代表哪些數(shù)字。

采用蠻力法時,設(shè)兵、炮、馬、卒和車的取值分別為a、b、c、d、e。則有:
a、b、c、d、e的取值范圍為0~9且均不相等

(a==b || a==c || a==d || a==e || b==c || b==d || b==e || c==d || c==e || d==e)

該表達式不成立
設(shè):
m=a×1000+b×100+c×10+d
n=a×1000+b×100+e×10+d
s=e×10000+d×1000+c×100+a×10+d
則有:m+n==s

void fun() { int a,b,c,d,e,m,n,s;for (a=1;a<=9;a++)for (b=0;b<=9;b++)for (c=0;c<=9;c++)for (d=0;d<=9;d++)for (e=0;e<=9;e++)if (a==b || a==c || a==d ||a==e || b==c || b==d ||b==e || c==d || c==e || d==e) continue;else{ m=a*1000+b*100+c*10+d;n=a*1000+b*100+e*10+d;s=e*10000+d*1000+c*100+a*10+d;if (m+n==s)printf("兵:%d 炮:%d 馬:%d卒:%d 車:%d\n",a,b,c,d,e);} }

總結(jié)

以上是生活随笔為你收集整理的蛮力法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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