#include<bits/stdc++.h>
using namespace std;
int con[10]={0,1,2,3,4,5,6,7,8,9};
int vir[8][2]={{-1,0},{0,-1},{1,0},{0,1},{-1,-1},{1,-1},{-1,1},{1,1}};
int ans;
//檢查此情況是否可以
bool LL(int mp[][6],int x,int y){
/*for(int i=0;i<5;i++){
for(int j=0;j<6;j++){
printf("%4d",mp[i][j]);
}cout<<endl;
}*/
for(int i=0;i<8;i++){
int tx=x+vir[i][0];
int ty=y+vir[i][1];
if(fabs(mp[x][y]-mp[tx][ty])==1)return true;
}
return false;
}
bool check(){
int mp[5][6],tt=0;
for(int i=0;i<5;i++){
for(int j=0;j<6;j++){
mp[i][j]=-10;
}
}
//memset(mp,-1,sizeof(mp));
for(int i=2;i<=4;i++){
mp[1][i]=con[tt++];
}
for(int i=1;i<=4;i++){
mp[2][i]=con[tt++];
}
for(int i=1;i<=3;i++){
mp[3][i]=con[tt++];
}
for(int i=0;i<5;i++){
for(int j=0;j<6;j++){
if(LL(mp,i,j)){
return false;
}
}
}
/*for(int i=0;i<5;i++){
for(int j=0;j<6;j++){
printf("%5d",mp[i][j]);
}cout<<endl<<endl;
}
printf("=======================================\n");*/
return true;
}
//全排列
void permutation(int k){
if(k==10){
if(check()){
//printf("\n%d\n",ans);
/*for(int i=0;i<10;i++){
printf("%d",con[i]);
} printf("\n");*/
ans++;
}
return;
}
for(int i=k;i<10;i++){
swap(con[k],con[i]);
permutation(k+1);
swap(con[k],con[i]);
}
}
int main(){
permutation(0);
cout<<ans<<endl;
system("pause");
return 0;
}

為什么我這個程式必須要加上system("puase")才可以看到結果,要不然就自動關閉視窗了,是程式有問題嗎?以前沒有這種情況啊
uj5u.com熱心網友回復:
pause 可以讓程式暫停;如果不加暫停,程式運行太快,快到我們需要pause一下才能看到結果。uj5u.com熱心網友回復:
編譯完成后,在命令列下啟動可執行程式試試……uj5u.com熱心網友回復:
是程式已經運行完了就直接關閉視窗了
uj5u.com熱心網友回復:
程式沒有問題,程式的主函式main運行完就return了,同時視窗也就關閉了
uj5u.com熱心網友回復:
本來就是關閉視窗,你可以用檔案操作uj5u.com熱心網友回復:
本來就是關閉視窗,你可以用檔案操作
可以別的程式不這樣啊
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/15853.html
標籤:C++ 語言
上一篇:float尾數只有23位能夠精確24位最大數是16777215.根本精確不到3.4e38這個取值范圍。如果我賦值一個數大于
