八皇后问题,输出了所有情况,不过有些结果只是旋转了90度
编辑: 面试啦 发布时间: 2023-04-04 20:32:21
八皇后问题,输出了所有情况,不过有些结果只是旋转了90度而已。(回溯算法的典型例题,是数据结构书上算法的具体实现,大家都亲自动手写过这个程序吗?)
#define N 8
int Board[N][N];
int Valid(int i, int j) { // 判断下棋位置是否有效
int k = 1;
for(k=1; i>=k && j>=k;k++)
if(Board[i-k][j-k]) return 0;
for(k=1; i>=k;k++)
if(Board[i-k][j]) return 0;
for(k=1; i>=k && j+k
if(Board[i-k][j+k]) return 0;
return 1;
}
void Trial(int i, int n) { // 寻找合适下棋位置
if(i == n) {
for(int k=0; k
for(int m=0; m
printf(“%d “, Board[k][m]);
printf(“\n”);
}
printf(“\n”);
} else {
for(int j=0; j
Board[i][j] = 1;
if(Valid(i,j))
Trial(i+1, n);
Board[i][j] = 0;
}
}
}
int main(int argc, char* argv[]) {
Trial(0, N);
}
#define N 8
int Board[N][N];
int Valid(int i, int j) { // 判断下棋位置是否有效
int k = 1;
for(k=1; i>=k && j>=k;k++)
if(Board[i-k][j-k]) return 0;
for(k=1; i>=k;k++)
if(Board[i-k][j]) return 0;
for(k=1; i>=k && j+k
return 1;
}
void Trial(int i, int n) { // 寻找合适下棋位置
if(i == n) {
for(int k=0; k
printf(“\n”);
}
printf(“\n”);
} else {
for(int j=0; j
if(Valid(i,j))
Trial(i+1, n);
Board[i][j] = 0;
}
}
}
int main(int argc, char* argv[]) {
Trial(0, N);
}
词条:c面试题
面试题库导航
- C++面试题
- JAVA面试题
- Oracle面试题
- MySQL面试题
- Linux面试题
- 网络工程师面试题
- 网管面试题
- 软件工程师面试题
- PHP面试题
- .net面试题
- 软件测试面试题
- EJB面试题
- Spring面试题
- Javascript面试题
- Python面试题
- QTP面试题
- Servlet面试题
- J2EE面试题
- Database面试题
- ASP面试题
- Unix面试题
- Loadrunner面试题
- 通信面试题
- 嵌入式面试题
- Ruby面试题
- Delphi面试题
- Mobile开发面试题
- SOA面试题
- JAVA面试题面试题
- 研发工程师面试题
- 软件架构师面试题
- 系统工程师面试题
- Android面试题
- JAVA程序员
- C#面试题