java n皇后
2015-06-07 22:30
585 查看
//http://acm.hdu.edu.cn/showproblem.php?pid=2553
//JAVA代码
import java.util.Scanner;
import java.util.concurrent.ConcurrentHashMap;
public class nQueen {
static int n;
static int count;
static int num[]=new int[21];
static boolean place(int j){
for(int i=0;i<j;i++){
if(num[i]==num[j]||Math.abs(num[i]-num[j])==Math.abs(i-j)){
return false;
}
}
return true;
}
static void search(int i){
if(i==n){
count++;
return;
}else{
for(int j=0;j<n;j++){
num[i]=j;
if(place(i)){
search(i+1);
}
}
}
}
public static void main(String[] args){
Scanner inScanner=new Scanner(System.in);
System.out.println("请输入皇后的个数:");
while(inScanner.hasNext()){
count=0;
n=inScanner.nextInt();
int begin=(int)System.currentTimeMillis();
search(0);
System.out.println("共有 "+count+" 种");
int end=(int)System.currentTimeMillis();
System.out.println("用时:"+(end-begin));
}
}
}
//C代码
#include <stdio.h>
#include<math.h>
#include <stdlib.h>
int num[11];
int count;
int n;
int place(int j){
int i;
for(i=0;i<j;i++){
if(num[i]==num[j]||abs(num[i]-num[j])==abs(i-j)){
return 0;
}
}
return 1;
}
int search(int i){
if(i==n)
count++;
else{
int j;
for(j=0;j<n;j++){
num[i]=j;
if(place(i)){
search(i+1);
}
}
}
return count;
}
int main(){
int sum[11],m;
for(n=1;n<=10;n++){
count=0;
sum
=search(0);
}
while(scanf("%d",&m)!=EOF&&m!=0){
printf("%d\n",sum[m]);
}
}
//JAVA代码
import java.util.Scanner;
import java.util.concurrent.ConcurrentHashMap;
public class nQueen {
static int n;
static int count;
static int num[]=new int[21];
static boolean place(int j){
for(int i=0;i<j;i++){
if(num[i]==num[j]||Math.abs(num[i]-num[j])==Math.abs(i-j)){
return false;
}
}
return true;
}
static void search(int i){
if(i==n){
count++;
return;
}else{
for(int j=0;j<n;j++){
num[i]=j;
if(place(i)){
search(i+1);
}
}
}
}
public static void main(String[] args){
Scanner inScanner=new Scanner(System.in);
System.out.println("请输入皇后的个数:");
while(inScanner.hasNext()){
count=0;
n=inScanner.nextInt();
int begin=(int)System.currentTimeMillis();
search(0);
System.out.println("共有 "+count+" 种");
int end=(int)System.currentTimeMillis();
System.out.println("用时:"+(end-begin));
}
}
}
//C代码
#include <stdio.h>
#include<math.h>
#include <stdlib.h>
int num[11];
int count;
int n;
int place(int j){
int i;
for(i=0;i<j;i++){
if(num[i]==num[j]||abs(num[i]-num[j])==abs(i-j)){
return 0;
}
}
return 1;
}
int search(int i){
if(i==n)
count++;
else{
int j;
for(j=0;j<n;j++){
num[i]=j;
if(place(i)){
search(i+1);
}
}
}
return count;
}
int main(){
int sum[11],m;
for(n=1;n<=10;n++){
count=0;
sum
=search(0);
}
while(scanf("%d",&m)!=EOF&&m!=0){
printf("%d\n",sum[m]);
}
}
相关文章推荐
- Java——(一)一切都是对象
- java安装及设置环境变量
- 有关eclipse查看应用签名的问题
- Java IDL介绍
- Java 接口和抽象类区别
- Java I/O— 梳理各种“流”
- Java中Properties类
- 为什么要读这本书《java编程思想》
- 如何把 JDK doc 文档与 Eclipse 关联?
- 读书笔记之java编程思想2
- java中间件学习1-java中间件的定义
- Java核心技术卷一学习笔记1
- java数组
- 第二十二篇 Java的一些关键字、 作用域 还有运算符的使用
- Spring MVC工作流程图
- Java Sorted Map Example
- 2014由于在myeclipse5.5.1许可证
- 学习java第6天 模仿XP画板(10%)
- Java - The SortedMap Interface
- 006_03Java解析XML之DOM方式与SAX方式