浩浩同學-資訊學-2020-07-29-學習記錄
今天練習和複習了下面四道程式: 1)隨機生成100個隨機數。 ```
include
include
include
define random(x) rand()%(x)
using namespace std;
int main(){
srand((int)time(0));
for (int i=0;i<100;i++){
cout<
}
```
2)輸入100個整數(上題的輸出正好是這題的輸入),用shell排序法輸出正確的順序。 ```
include
include
using namespace std; void ShellSort(int a[],int n){ for(int gap=n/2;gap>0;gap/=2){ for(int i=gap;i<n;++i){ int j=i; while(j-gap>=0 && a[j-gap]>a[j]) { a[j-gap] = a[j-gap]+a[j]; a[j] = a[j-gap]-a[j]; a[j-gap] = a[j-gap]-a[j]; j=j-gap; } } } for(int i=0;i<n;++i)cout<<a[i]<<" "; } int main(){ int a[100]; for(int i=0;i<100;i++) cin>>a[i]; ShellSort(a,100); return 0; } ```
3)使用至少兩種方法完成“八皇后問題”。今晚介紹了兩種,方法一:簡單直接8個for迴圈;方法二:遞迴求解。詳見下面程式碼。 程式1: ```
include
using namespace std;
int total=0;
bool check(int a[]){
for(int i=0;i<8;i++){
for(int j=i+1;j<8;j++){
if(a[i]==a[j]) return false;
if(a[i]-a[j]==i-j||a[i]-a[j]==j-i) return false;
}
}
return true;
}
void print(int a[]){
cout<<++total<<":";
for(int i=0;i<8;i++) cout<
for(int b2=0;b2<8;b2++){
a[2]=b2;
for(int b3=0;b3<8;b3++){
a[3]=b3;
for(int b4=0;b4<8;b4++){
a[4]=b4;
for(int b5=0;b5<8;b5++){
a[5]=b5;
for(int b6=0;b6<8;b6++){
a[6]=b6;
for(int b7=0;b7<8;b7++){
a[7]=b7;
if(check(a)) print(a);
}
}
}
}
}
}
}
}
return 0;
}
```
程式2: ```
include //八皇后問題遞迴方法
using namespace std;
int total = 0;
int a[8] = { -1,-1,-1,-1,-1,-1,-1,-1 };
bool check(int row, int col) { // 在row行,col列可以放置皇后嗎?
for (int i = 0; i < row; i++) // 判斷同列、對角線是否有皇后衝突
if (a[i] == col || row - i == col - a[i] || row - i == a[i] - col)
return false; // 返回0表示不能放,有衝突
return true;
}
void find(int n) {
if (n == 8) { // 遞迴函式的出口,從0到7行都已經放置完畢,
total++; // 並且都是正確的,所以當n=8的時候,方案數加1
cout<
}
}
int main() {
find(0);
return 0;
}
```
相關文章
- 學習記錄
- Flutter學習記錄(一)Dart學習FlutterDart
- 【每日學習記錄】使用錄影裝置記錄每天的學習
- 記錄學習PromisePromise
- windbg學習記錄
- Eureka學習記錄
- Mybatis學習記錄MyBatis
- socket學習記錄
- JQuery學習記錄jQuery
- larabbs 學習記錄
- Tableau學習記錄
- MySQL學習記錄MySql
- Elasticsearch學習記錄Elasticsearch
- swift學習記錄Swift
- jQuery 學習記錄jQuery
- RAC 學習記錄
- RMAN學習記錄
- RAC學習記錄
- activiti學習記錄
- 學習記錄APPAPP
- langchain學習記錄LangChain
- JAVA學習記錄Java
- Docker學習記錄Docker
- 【記錄】MySQL 學習筆記MySql筆記
- [記錄] MySQL 學習筆記MySql筆記
- 1364: 向Z同學學習
- Vue 學習記錄四Vue
- Vue 學習記錄三Vue
- Vue 學習記錄一Vue
- Vue 學習記錄二Vue
- fastadmin 學習記錄AST
- iOS KVC學習記錄iOS
- iOS KVO學習記錄iOS
- 分散式學習記錄分散式
- flutter學習記錄-1Flutter
- python學習記錄Python
- rust 學習記錄(一)Rust
- c++學習記錄C++