早教吧作业答案频道 -->其他-->
大家可不可以帮我,有个题目对我来说很难缠八皇后问题:在一个8*8的国际象棋盘上,求出能按要求摆放八颗棋子的所有方案.要求是:如果在一个格子上有一个棋,则此格子所在相应在行、列以
题目详情
大家可不可以帮我,有个题目对我来说很难缠
八皇后问题:在一个8*8的国际象棋盘上,求出能按要求摆放八颗棋子的所有方案.
要求是:如果在一个格子上有一个棋,则此格子所在相应在行、列以及“对角线”上不能再有其它棋子.
分不多,因为我很穷;题不难,可是我很笨.
八皇后问题:在一个8*8的国际象棋盘上,求出能按要求摆放八颗棋子的所有方案.
要求是:如果在一个格子上有一个棋,则此格子所在相应在行、列以及“对角线”上不能再有其它棋子.
分不多,因为我很穷;题不难,可是我很笨.
▼优质解答
答案和解析
不知道你会不会java
我是搞java的,给你一个java实现的8皇后代码
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class J_Calendar extends JFrame
{
private int year, month;
private String[] str = { "sun","mon","tue","wed","thu","fri","sat" };
private Container c = getContentPane();
private JPanel[] p = { new JPanel(), new JPanel() };
private JLabel[][] label = new JLabel[7][7];
private JButton[] button = { new JButton("Previece"), new JButton("Next") };
private JLabel jl = new JLabel( "Calendar By LingShao", JLabel.CENTER );
private JMenuBar menuBar = new JMenuBar();
private JMenu[] menu =
{
new JMenu( "Year" ),
new JMenu( "Month" ),
new JMenu( "Help" )
};
private JMenuItem about = new JMenuItem( "About.." );
private JMenuItem exit = new JMenuItem( "Exit" );
private JMenu[] menuYear = new JMenu[6];
private JMenu[] menuMonth = new JMenu[4];
private JRadioButtonMenuItem[] rbmiYear = new JRadioButtonMenuItem[120];
private JRadioButtonMenuItem[] rbmiMonth = new JRadioButtonMenuItem[12];
private ImageIcon[] iconDay = new ImageIcon[31];
private ImageIcon[] iconWeek = new ImageIcon[7];
private ImageIcon[] iconBack =
{
new ImageIcon("red.gif"),
new ImageIcon("yellow.gif")
};
public J_Calendar()
{
super( "Calendar By LingShao" );
//set Container and JPanel
c.setLayout( new FlowLayout(FlowLayout.CENTER) );
p[0].setLayout( new GridLayout(7,7) );
p[1].setLayout( new FlowLayout(FlowLayout.CENTER) );
for( int i=0; i c.add( p[i] );
//set ImageIcon
for( int i=0; i iconDay[i] = new ImageIcon( i+1 + ".gif" );
for( int i=0; i iconWeek[i] = new ImageIcon( str[i] + ".gif" );
//set JLabel
for( int i=0; i for( int j=0; j {
if( i==0 )
label[i][j] = new JLabel( iconWeek[j] );
else
label[i][j] = new JLabel( iconBack[(i+j)%2] );
p[0].add( label[i][j] );
}
p[1].add( jl );
for( int i=0; i p[1].add( button[i] );
//set JMenu
for( int y=1980,t=20,i=0; i menuYear[i] = new JMenu( i*t+y + " - " + (i*t+y+19) );
for( int i=0; i menuMonth[i] = new JMenu( "Season " + (i+1) );
for( int y=1980,i=0; i rbmiYear[i] = new JRadioButtonMenuItem( y+i+"" );
for( int i=0; i rbmiMonth[i] = new JRadioButtonMenuItem( i+1+"" );
//add MENU
setJMenuBar( menuBar );
for( int i=0; i menuBar.add( menu[i] );
for( int i=0; i {
menu[0].add( menuYear[i] );
for( int t=20,j=i*t; j menuYear[i].add( rbmiYear[j] );
}
for( int i=0; i {
menu[1].add( menuMonth[i] );
for( int t=3,j=i*t; j menuMonth[i].add( rbmiMonth[j] );
}
menu[2].add( about );
about.addActionListener( new ActionListener()
{
public void actionPerformed( ActionEvent event )
{
JOptionPane.showMessageDialog(
null, "Calendar By LingShao ZJUT" );
}
} );
menu[2].addSeparator();
menu[2].add( exit );
exit.addActionListener( new ActionListener()
{
public void actionPerformed( ActionEvent event )
{
System.exit( 0 );
}
} );
//add ButtonGroup
ButtonGroup radioGroupYear = new ButtonGroup();
for( int i=0; i {
radioGroupYear.add( rbmiYear[i] );
rbmiYear[i].setSelected( false );
}
ButtonGroup radioGroupMonth = new ButtonGroup();
for( int i=0; i {
radioGroupMonth.add( rbmiMonth[i] );
rbmiMonth[i].setSelected( false );
}
//set JButton ActionListener
button[0].addActionListener( new ActionListener()
{
public void actionPerformed( ActionEvent event )
{
if(year==0||month==0||year==1980&&month==1)
{
JOptionPane.showMessageDialog(
null, "NoNo ! Date Limited !" );
return;
}
if( month==1 )
{
month = 12;
year--;
}
else month--;
rbmiYear[year-1980].setSelected( true );
rbmiMonth[month-1].setSelected( true );
}
} );
button[1].addActionListener( new ActionListener()
{
public void actionPerformed( ActionEvent event )
{
if( year==0||month==0||year==2099&&month==12 )
{
JOptionPane.showMessageDialog(
null, "NoNo ! Date Limited !");
return;
}
if( month==12 )
{
month = 1;
year++;
}
else month++;
rbmiYear[year-1980].setSelected( true );
rbmiMonth[month-1].setSelected( true );
}
} );
//add JRadioButtonMenuItem ItemListener
for( int i=0; i rbmiYear[i].addItemListener( new ItemListener()
{
public void itemStateChanged( ItemEvent event )
{
for( int j=0; j if( event.getSource()==rbmiYear[j] )
{
if( rbmiYear[j].isSelected() )
{
year = j+1980;
if( month!=0 )
display();
}
return;
}
}
} );
for( int i=0; i rbmiMonth[i].addItemListener( new ItemListener()
{
public void itemStateChanged( ItemEvent event )
{
for( int j=0; j {
if( event.getSource()==rbmiMonth[j] )
{
if( rbmiMonth[j].isSelected() )
{
month = j+1;
if( year!=0 )
display();
}
return;
}
}
}
} );
setSize( 300, 380 );
setResizable( false );
setVisible( true );
}
//判断y年是否为闰年
public boolean isLeapyear( int y )
{
return (y%400==0||y%4==0&&y%100!=0);
}
//返回year年month月1日离公元1980年1月1日头尾相隔多少天,此为判断星期的依据
public int getDayOfWeek()
{
int day = 0;
for( int i=1980; i day = (day+(isLeapyear(i)?366:365))%7;
switch( month )
{
case 12: day += 30;
case 11: day += 31;
case 10: day += 30;
case 9: day += 31;
case 8: day += 31;
case 7: day += 30;
case 6: day += 31;
case 5: day += 30;
case 4: day += 31;
case 3: day += isLeapyear(year)?29:28;
case 2: day += 31;
case 1: day += 1;
default: break;
}
return day%7;
}
//根据getDayOfWeek()函数返回的整数显示此月份的日历表
public void display()
{
jl.setText( "Year:" + year + " Month:" + month );
int firstDay, lastDay, week = (1+getDayOfWeek())%7;
for( firstDay=0; firstDay label[1][firstDay].setIcon( null );
switch(month)
{
case 12:case 10:case 8:case 7:case 5:case 3:case 1:lastDay=31;break;
case 11:case 9:case 6:case 4:lastDay=30;break;
case 2:lastDay=isLeapyear(year)?29:28;break;
default:lastDay=0;break;
}
for( int t=0,i=1; i for( int j=(i==1?firstDay:0); j if( t label[i][j].setIcon( iconDay[t] );
else
label[i][j].setIcon( null );
}
public static void main( String[] args )
{
J_Calendar calendar = new J_Calendar();
calendar.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
}
我是搞java的,给你一个java实现的8皇后代码
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class J_Calendar extends JFrame
{
private int year, month;
private String[] str = { "sun","mon","tue","wed","thu","fri","sat" };
private Container c = getContentPane();
private JPanel[] p = { new JPanel(), new JPanel() };
private JLabel[][] label = new JLabel[7][7];
private JButton[] button = { new JButton("Previece"), new JButton("Next") };
private JLabel jl = new JLabel( "Calendar By LingShao", JLabel.CENTER );
private JMenuBar menuBar = new JMenuBar();
private JMenu[] menu =
{
new JMenu( "Year" ),
new JMenu( "Month" ),
new JMenu( "Help" )
};
private JMenuItem about = new JMenuItem( "About.." );
private JMenuItem exit = new JMenuItem( "Exit" );
private JMenu[] menuYear = new JMenu[6];
private JMenu[] menuMonth = new JMenu[4];
private JRadioButtonMenuItem[] rbmiYear = new JRadioButtonMenuItem[120];
private JRadioButtonMenuItem[] rbmiMonth = new JRadioButtonMenuItem[12];
private ImageIcon[] iconDay = new ImageIcon[31];
private ImageIcon[] iconWeek = new ImageIcon[7];
private ImageIcon[] iconBack =
{
new ImageIcon("red.gif"),
new ImageIcon("yellow.gif")
};
public J_Calendar()
{
super( "Calendar By LingShao" );
//set Container and JPanel
c.setLayout( new FlowLayout(FlowLayout.CENTER) );
p[0].setLayout( new GridLayout(7,7) );
p[1].setLayout( new FlowLayout(FlowLayout.CENTER) );
for( int i=0; i
//set ImageIcon
for( int i=0; i
for( int i=0; i
//set JLabel
for( int i=0; i
if( i==0 )
label[i][j] = new JLabel( iconWeek[j] );
else
label[i][j] = new JLabel( iconBack[(i+j)%2] );
p[0].add( label[i][j] );
}
p[1].add( jl );
for( int i=0; i
//set JMenu
for( int y=1980,t=20,i=0; i
for( int i=0; i
for( int y=1980,i=0; i
for( int i=0; i
//add MENU
setJMenuBar( menuBar );
for( int i=0; i
for( int i=0; i
menu[0].add( menuYear[i] );
for( int t=20,j=i*t; j menuYear[i].add( rbmiYear[j] );
}
for( int i=0; i
menu[1].add( menuMonth[i] );
for( int t=3,j=i*t; j menuMonth[i].add( rbmiMonth[j] );
}
menu[2].add( about );
about.addActionListener( new ActionListener()
{
public void actionPerformed( ActionEvent event )
{
JOptionPane.showMessageDialog(
null, "Calendar By LingShao ZJUT" );
}
} );
menu[2].addSeparator();
menu[2].add( exit );
exit.addActionListener( new ActionListener()
{
public void actionPerformed( ActionEvent event )
{
System.exit( 0 );
}
} );
//add ButtonGroup
ButtonGroup radioGroupYear = new ButtonGroup();
for( int i=0; i
radioGroupYear.add( rbmiYear[i] );
rbmiYear[i].setSelected( false );
}
ButtonGroup radioGroupMonth = new ButtonGroup();
for( int i=0; i
radioGroupMonth.add( rbmiMonth[i] );
rbmiMonth[i].setSelected( false );
}
//set JButton ActionListener
button[0].addActionListener( new ActionListener()
{
public void actionPerformed( ActionEvent event )
{
if(year==0||month==0||year==1980&&month==1)
{
JOptionPane.showMessageDialog(
null, "NoNo ! Date Limited !" );
return;
}
if( month==1 )
{
month = 12;
year--;
}
else month--;
rbmiYear[year-1980].setSelected( true );
rbmiMonth[month-1].setSelected( true );
}
} );
button[1].addActionListener( new ActionListener()
{
public void actionPerformed( ActionEvent event )
{
if( year==0||month==0||year==2099&&month==12 )
{
JOptionPane.showMessageDialog(
null, "NoNo ! Date Limited !");
return;
}
if( month==12 )
{
month = 1;
year++;
}
else month++;
rbmiYear[year-1980].setSelected( true );
rbmiMonth[month-1].setSelected( true );
}
} );
//add JRadioButtonMenuItem ItemListener
for( int i=0; i
{
public void itemStateChanged( ItemEvent event )
{
for( int j=0; j
{
if( rbmiYear[j].isSelected() )
{
year = j+1980;
if( month!=0 )
display();
}
return;
}
}
} );
for( int i=0; i
{
public void itemStateChanged( ItemEvent event )
{
for( int j=0; j
if( event.getSource()==rbmiMonth[j] )
{
if( rbmiMonth[j].isSelected() )
{
month = j+1;
if( year!=0 )
display();
}
return;
}
}
}
} );
setSize( 300, 380 );
setResizable( false );
setVisible( true );
}
//判断y年是否为闰年
public boolean isLeapyear( int y )
{
return (y%400==0||y%4==0&&y%100!=0);
}
//返回year年month月1日离公元1980年1月1日头尾相隔多少天,此为判断星期的依据
public int getDayOfWeek()
{
int day = 0;
for( int i=1980; i
switch( month )
{
case 12: day += 30;
case 11: day += 31;
case 10: day += 30;
case 9: day += 31;
case 8: day += 31;
case 7: day += 30;
case 6: day += 31;
case 5: day += 30;
case 4: day += 31;
case 3: day += isLeapyear(year)?29:28;
case 2: day += 31;
case 1: day += 1;
default: break;
}
return day%7;
}
//根据getDayOfWeek()函数返回的整数显示此月份的日历表
public void display()
{
jl.setText( "Year:" + year + " Month:" + month );
int firstDay, lastDay, week = (1+getDayOfWeek())%7;
for( firstDay=0; firstDay
switch(month)
{
case 12:case 10:case 8:case 7:case 5:case 3:case 1:lastDay=31;break;
case 11:case 9:case 6:case 4:lastDay=30;break;
case 2:lastDay=isLeapyear(year)?29:28;break;
default:lastDay=0;break;
}
for( int t=0,i=1; i
else
label[i][j].setIcon( null );
}
public static void main( String[] args )
{
J_Calendar calendar = new J_Calendar();
calendar.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
}
看了 大家可不可以帮我,有个题目对...的网友还看了以下:
一家电信公司给顾客提供两种上网收费方式:方式甲以每分钟0.1元的价格收费;方式乙除收月基费20元以 2020-04-26 …
用假设法解题3用96000元购进一批高档照相机,如果全部以每架600元的价钱卖出,可以赚钱两成五, 2020-05-13 …
中级微观经济学钟根元如果所有的价格都上涨20%,则帕氏价格指数和拉丝价格指数都正好上涨20%中级微 2020-05-16 …
有一个5x5的正方形网格,若在第一个格是上放1枚棋子,在第二个格点上放2枚棋子,在第三个格点上放8 2020-06-18 …
中国与东盟自由贸易区成立以来,以苹果、柑橘和梨为代表的中国水果不断出口东南亚各国,而以榴莲、火龙果 2020-06-28 …
夏天,大家都喜欢吃西瓜,而西瓜的价格往往与西瓜的重量相关,小李到一个水果店去买西瓜,价格表上写的是 2020-07-11 …
已知在3×3的方格内已填好了两个数19和95,可以在其余空格中填上适当的数,使得每行、每列及对角线 2020-08-01 …
期货远期合约价格与近期合约价格之间的关系请问远期期货合约价格被大户通过锁仓等方式形成上涨,是否会造成 2020-11-06 …
行测难题甲乙丙丁考试及不及格的问题.如果甲同学考试及格了,那么乙同学、丙同学、和丁同学肯定也都及格了 2020-11-30 …
中考语文的古诗填空现在换成格子了,写错了字要改的话可以写在外面吗中考时语文现在的古诗词填空已经是换成 2020-12-12 …