窮舉匯編程序
A. c++程序編寫:用窮舉法找出1到100的質數並顯示出來。分別使用while、do-while、for循環語句實現。
1.用while:
include<iostream.h>
void main()
{int i,j,n,m;
i=2;
while(i<101)
{m=1;n=i/2;j=2;
while(j<=n)
{ if(i%j==0)
{m=0;
breake;
}
j++;
}
if(m)
cout<<i<<"";
i++;
}
}
2.用do...while
#include<iostream.h>
void main()
{int i,j,n,m;
i=2;
do
{m=1;n=i/2;j=2;
do
{if(i%j==0)
{m=0;
breake;
}
j++;
}while(j<=n);
if(m)
cout<<i<<"";
i++;
}while(i<101);
}
3.用for
# include<iostream.h>
void main()
{int i,j,n,m;
for(i=2;i<101;i++)
{m=1;
n=i/2;
for(j=2;j<=k;j++)
{if(i%j==0)
{m=0;
breake;
}
}
if(m)
cout<<i<<"";
}}
B. 窮舉演算法:編寫一個暴力破解的程序,測試破解一個由數字構成的6位密碼需要多長時間
6個字元:22.5億個組合(無特殊字元)
1. 由每秒攻擊站點 10000 次的 Web 程序:需要3.7周
2. 離線使用高功率的伺服器或者台式機(1000億/秒):0.0224秒
3. 使用大規模的並行處理器集群(100兆億/秒):0.0000224秒
6個字元:7.6萬億個組合(有特殊字元)
1. 由每秒攻擊站點 10000 次的 Web 程序:需要2.4個世紀
2. 離線使用高功率的伺服器或者台式機(1000億/秒):1.26分鍾
3. 使用大規模的並行處理器集群(100兆億/秒):0.0756秒
C. c語言什麼是窮舉、遞歸、迭代演算法
窮舉法也叫枚舉法或列舉法。通常對於一些要求得到精確結果而所求結果又不大的時候可用此法,具體的做法就是將所有可能的情況一一舉出。
程序調用自身的編程技巧稱為遞歸。遞歸做為一種演算法在程序設計語言中廣泛應用。
代法也稱輾轉法,是一種不斷用變數的舊值遞推新值的過程,跟迭代法相對應的是直接法,即一次性解決問題。
D. C# 或java 窮舉演算法、
這是一個經典的全排列演算法問題 我把演算法寫在下邊 是C#的
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace Pailie
{
static class Program
{
/// <summary>
/// 應用程序的主入口點。
/// </summary>
[STAThread]
static void Main()
{
string s = "abcd";//用於計算全排列的輸入字元串
char[] add = s.ToCharArray();
pai(ref add, 0, s.Length);
}
//遞歸演算法
// str:輸入的字元串toChar結果
//m :重排列的起始位置。全排列起始位置為0
//n: 排列長度 全排列起始位置為字元串長度
private static void pai(ref char[] str, int m, int n)
{
if (m < n)
{
for (int i = 0; i <= m; i++)
{
pai(ref str, m + 1, n);
chang(ref str, m);
}
}
else
{
Console.WriteLine(str);
}
}
//移位
private static void chang(ref char[] str, int m)
{
char temp = str[0];
for (int i = 0; i < m; i++)
{
str[i] = str[i + 1];
}
str[m] = temp;
}
}
}
寫個演算法不容易。多少加點分吧
E. 求高手指點:Matlab中怎樣實現窮舉
窮舉法也要有個范圍的,比如一到幾萬或者幾十萬,最好不要用多層這么大的循環,在設置一個IF語句對該范圍符合的條件跳出就好啦,若是循環能進行到了最後,說明該范圍中沒有數符合條件。
for(i=1:1000000)
if(i==1000000)%若循環結束後的answer=0,那麼說明1到1000000中沒有符合的條件
answer=0;
else
anser=1;%若循環結束後的answer=1,說明有值符合條件
end
if()%括弧中填判斷條件
break;
end
end
F. 編寫程序,用窮舉法輸出100以內的素數
int i,n,x,s;for(i=2;i<=100;i++){ for(n=2;n<i;n++){ for(x=2;x<i;x++){ s=x*n; if(s==i){ } } }printf("素數 %d",i);//應該是這樣吧, 優化的話效率能提供一倍}
G. 窮舉法是什麼,有什麼用,怎麼計算
窮舉法又稱列舉法、枚舉法,是蠻力策略的具體體現,是一種簡單而直接地解決問題的方法。其基本思想是逐一列舉問題所涉及的所有情形,並根據問題提出的條件檢驗哪些是問題的解,哪些應予排除。
窮舉的作用
1、理論上,窮舉可以解決可計算領域中的各種問題。尤其處在計算機計算速度非常高的今天,窮舉的應用領域是非常廣闊的。
2、 在實際應用中,通常要解決的問題規模不大,用窮舉設計的演算法其運算速度是可以接受的。此時,設計一個更高效率的演算法代價不值得。
3、 窮舉可作為某類問題時間性能的底限,用來衡量同樣問題的更高效率的演算法。
窮舉怎麼計算:
1、根據問題的具體情況確定窮舉量(簡單變數或數組);
2、根據確定的范圍設置窮舉循環;
3、根據問題的具體要求確定篩選約束條件;
4、設計窮舉程序並運行、調試,對運行結果進行分析與討論。 當問題所涉及數量非常大時,窮舉的工作量也就相應較大,程序運行時間也就相應較長。為此,應用窮舉求解時,應根據問題的具體情況分析歸納,尋找簡化規律,精簡窮舉循環,優化窮舉策略。
(7)窮舉匯編程序擴展閱讀:
窮舉法的基本思想是根據題目的部分條件確定答案的大致范圍,並在此范圍內對所有可能的情況逐一驗證,直到全部情況驗證完畢。若某個情況驗證符合題目的全部條件,則為本問題的一個解;若全部情況驗證後都不符合題目的全部條件,則本題無解。窮舉法也稱為枚舉法。
用窮舉法解題時,就是按照某種方式列舉問題答案的過程。針對問題的數據類型而言,常用的列舉方法一有如下三種:
(1)順序列舉 是指答案范圍內的各種情況很容易與自然數對應甚至就是自然數,可以按自然數的變化順序去列舉。
(2)排列列舉 有時答案的數據形式是一組數的排列,列舉出所有答案所在范圍內的排列,為排列列舉。
(3)組合列舉 當答案的數據形式為一些元素的組合時,往往需要用組合列舉。組合是無序的。
參考資料:網路-窮舉法
H. 用VB編寫程序窮舉法求兩個自然數m、n的最大公約數
Function gcd(x As Integer, y As Integer)
Dim m As Integer, i As Integer
If x > y Then m = y Else m = x
For i = m To 1 Step -1
If x Mod i = 0 And y Mod i = 0 Then
gcd = i
Exit Function
End If
Next i
gcd = 1
End Function
I. MATLAB窮舉排列組合
%數據太大,以6個人,分三組為示例:
a='A':'F';
fori=combnk(a,2)'
t=setdiff(a,i);
forj=combnk(t,2)'
k=setdiff(t,j);
disp([i'j'k])
end
end
%如下是你題目對應的程序
a='A':'U';
fori=combnk(a,7)'
t=setdiff(a,i);
forj=combnk(t,7)'
k=setdiff(t,j);
%[i'j'k]為得到的組合情況
end
end
J. 微機原理中設計一個程序,求10個無符號數的最大值
DATA SEGMENT
ARY DW 025AH,1357H,776H,0040H,05C3H,36D0H,720FH,082AH,019DH,0124H
ORG 0050H
MAX DW 0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, ES:DATA
ORG 100H
START: MOV CX, 9H ;循環次數=數據個數-1
MOV AX, SEG ARY
MOV ES, AX
LEA SI, ARY
MOV AX, ES:[SI] ;最大值初值
SCHMAX: ADD SI, 2
MOV DX, ES:[SI]
CMP DX, AX
JLE NEXT
MOV AX, DX
JMP NEXT
NEXT: LOOP SCHMAX
FINISH: MOV ES:[MAX], AX
INT 3 ;暫停,以便查看運行結果
CODE ENDS
END START
;;編譯鏈接生成exe文件, 在Win7的DOS環境用Debug運行通過;
;;運行結果,找到這10個數的最大值並保存到max單元中,
;;在Debug中,運行至INT 3 暫停,可用 D ES:0050 命令查看到該最大值。