h*g
2 楼
zz:
原文:
http://blog.csdn.net/njnu_mjn/archive/2010/04/04/5449098.aspx
八皇后问题(C++) 收藏
1 、问题描述: 在一个8*8 的棋盘上放置8 个皇后,不允许任何两个皇后在棋盘的同
一行、同一列和同一对角线上。
2 、关键字: 递归、上溯
3 、技巧:
1 )、
经观察发现,对8 x 8 的二维数组上的某点a[i][j](0<=i,j<=7)
其主对角线(即左上至右下)上的每个点的i-j+7 的值(范围在(0,14) )均相等;
其从对角线(即右上至左下)上的每个点的i+j 的值(范围在(0,14) )均相等;
且每个主对角线之间的i-j+7 的值均不同,每个从对角线之间的i-j+7 的值亦不同;
如a[3][4]:
主:3-4+7=6
从:3+4=7
因此可设两个数组b[15],c[15] 分别表示主、从对角线是否安全
(为1 表示有皇后,不安全;为0 表示安全)
2 )、
每行有且仅有一个皇后:
每i 个皇后放在每i 行(0<=i<=7)
void eightQueens( int line );
4 、源码( C++ )
//eight_queens.cpp
#include
using namespace std;
int data[ 8 ][ 8 ]; //chess(double dimensional array)
int a[ 8 ]; //column( 列)
int b[ 15 ]; // 主对角线( 左上至右下)
int c[ 15 ]; // 从对角线( 右上至左下)
int count = 0;
void eightQueens( int );
void output( const int [][ 8 ], int );
int main()
{
int i, j;
for( i = 0; i < 15; ++i ) // 主、从对角线
b[ i ] = c[ i ] = 0; // 表示安全
for( i = 0; i < 8; ++i )//chess
{
a[ i ] = 0; //i 列安全
for( j = 0; j < 8; ++j )
data[ i ][ j ] = 0;
}
eightQueens( 0 );
cout << "\ncount = " << count << endl;
return 0;
}
void eightQueens( int line )
{
if( 8 == line )// 八个皇后安置就位,输出
{
output( data, 8 );
cout << endl;
return;
}
for( int column = 0; column < 8; ++column )
{
if( 0 == a[ column ] && 0 == b[ line - column + 7 ] && 0 == c[ line +
column ] )
{
data[ line ][ column ] = 1; //
安置皇后
a[ column ] = 1; // 此列被占
b[ line - column + 7 ] = 1; // 主对角线被占
c[ line + column ] = 1; // 从对角线被占
eightQueens( line + 1 ); // 下一个皇后
// 重置
data[ line ][ column ] = 0;
a[ column ] = 0;
b[ line - column + 7 ] = 0;
c[ line + column ] = 0;
}
}
}
//output chess
void output( const int data[][ 8 ], int size )
{
for( int i = 0; i < size; ++i )
{
for( int j = 0; j < size; ++j )
cout << data[ i ][ j ] << ' ';
cout << endl;
}
++count;
}
5 、性能:
时间复杂度O(n^2)
6 、测试
环境:VC++6.0
原文:
http://blog.csdn.net/njnu_mjn/archive/2010/04/04/5449098.aspx
八皇后问题(C++) 收藏
1 、问题描述: 在一个8*8 的棋盘上放置8 个皇后,不允许任何两个皇后在棋盘的同
一行、同一列和同一对角线上。
2 、关键字: 递归、上溯
3 、技巧:
1 )、
经观察发现,对8 x 8 的二维数组上的某点a[i][j](0<=i,j<=7)
其主对角线(即左上至右下)上的每个点的i-j+7 的值(范围在(0,14) )均相等;
其从对角线(即右上至左下)上的每个点的i+j 的值(范围在(0,14) )均相等;
且每个主对角线之间的i-j+7 的值均不同,每个从对角线之间的i-j+7 的值亦不同;
如a[3][4]:
主:3-4+7=6
从:3+4=7
因此可设两个数组b[15],c[15] 分别表示主、从对角线是否安全
(为1 表示有皇后,不安全;为0 表示安全)
2 )、
每行有且仅有一个皇后:
每i 个皇后放在每i 行(0<=i<=7)
void eightQueens( int line );
4 、源码( C++ )
//eight_queens.cpp
#include
using namespace std;
int data[ 8 ][ 8 ]; //chess(double dimensional array)
int a[ 8 ]; //column( 列)
int b[ 15 ]; // 主对角线( 左上至右下)
int c[ 15 ]; // 从对角线( 右上至左下)
int count = 0;
void eightQueens( int );
void output( const int [][ 8 ], int );
int main()
{
int i, j;
for( i = 0; i < 15; ++i ) // 主、从对角线
b[ i ] = c[ i ] = 0; // 表示安全
for( i = 0; i < 8; ++i )//chess
{
a[ i ] = 0; //i 列安全
for( j = 0; j < 8; ++j )
data[ i ][ j ] = 0;
}
eightQueens( 0 );
cout << "\ncount = " << count << endl;
return 0;
}
void eightQueens( int line )
{
if( 8 == line )// 八个皇后安置就位,输出
{
output( data, 8 );
cout << endl;
return;
}
for( int column = 0; column < 8; ++column )
{
if( 0 == a[ column ] && 0 == b[ line - column + 7 ] && 0 == c[ line +
column ] )
{
data[ line ][ column ] = 1; //
安置皇后
a[ column ] = 1; // 此列被占
b[ line - column + 7 ] = 1; // 主对角线被占
c[ line + column ] = 1; // 从对角线被占
eightQueens( line + 1 ); // 下一个皇后
// 重置
data[ line ][ column ] = 0;
a[ column ] = 0;
b[ line - column + 7 ] = 0;
c[ line + column ] = 0;
}
}
}
//output chess
void output( const int data[][ 8 ], int size )
{
for( int i = 0; i < size; ++i )
{
for( int j = 0; j < size; ++j )
cout << data[ i ][ j ] << ' ';
cout << endl;
}
++count;
}
5 、性能:
时间复杂度O(n^2)
6 、测试
环境:VC++6.0
l*n
3 楼
我刚efile I-140,现在在填I-907,两个问题不清楚,请教:
(一).问填表人是:
(1)Are the petitioner who is filing or has filed a petition eligible for
premuum processing?
(3)Are the applicant who is filing or has filed an application eligible
for premuum processing
这两个选项有什么区别呀?
(二)information about request
1. Form number of related petition/application
2. Receipt number of related petition/application
3. classification/eligibility requested.
4. petitioner/applicant in the relating case
5. Beneficiary in the relating case
是不是1填我刚刚efile I-140后得到的那个什么条形码号码?
2不填
3填I-140,还是填EB1a啊?
4和5都填我自己的名字,对吧?
问题较多,多谢大家!
(一).问填表人是:
(1)Are the petitioner who is filing or has filed a petition eligible for
premuum processing?
(3)Are the applicant who is filing or has filed an application eligible
for premuum processing
这两个选项有什么区别呀?
(二)information about request
1. Form number of related petition/application
2. Receipt number of related petition/application
3. classification/eligibility requested.
4. petitioner/applicant in the relating case
5. Beneficiary in the relating case
是不是1填我刚刚efile I-140后得到的那个什么条形码号码?
2不填
3填I-140,还是填EB1a啊?
4和5都填我自己的名字,对吧?
问题较多,多谢大家!
p*y
4 楼
很喜欢新鲜的百合根煮水或煮粥喝。请问哪一种百合是用来吃根的?多谢!
E*e
5 楼
4T的貌似只有他和日立的review还能看,比WD强多了,但是希捷名声好像不太行?
G*g
7 楼
不止吧。N^N
l*n
8 楼
第一个问题已经解决:最好填后面那个
大家帮看看第二个问题!
多谢!!!
大家帮看看第二个问题!
多谢!!!
g*e
9 楼
tiger lily
a*m
12 楼
n!
n*t
14 楼
红盘烂?
呵呵,随便GOOGLE一下,希捷至少烂10倍
呵呵,随便GOOGLE一下,希捷至少烂10倍
T*m
19 楼
我前段时间有个帖子,专讲能吃的百合的:
http://www.mitbbs.com/article0/gardening/31795483_0.html
【在 p*******y 的大作中提到】
: 很喜欢新鲜的百合根煮水或煮粥喝。请问哪一种百合是用来吃根的?多谢!
http://www.mitbbs.com/article0/gardening/31795483_0.html
【在 p*******y 的大作中提到】
: 很喜欢新鲜的百合根煮水或煮粥喝。请问哪一种百合是用来吃根的?多谢!
d*3
20 楼
WD Red还是很不错的,至少比希捷强很多倍,最好的还是日立
https://www.backblaze.com/blog/best-hard-drive/
https://www.backblaze.com/blog/best-hard-drive/
w*8
21 楼
懒惰+拖沓,基本没救。如果给了很多机会,还是不改,那就只能跟他说bye,good
luck了。留着也会影响整个组的士气,让你生气无奈。
luck了。留着也会影响整个组的士气,让你生气无奈。
E*e
23 楼
蛋蛋上Red的review大半差评啊,怎么回事?
【在 d*******3 的大作中提到】
: WD Red还是很不错的,至少比希捷强很多倍,最好的还是日立
: https://www.backblaze.com/blog/best-hard-drive/
【在 d*******3 的大作中提到】
: WD Red还是很不错的,至少比希捷强很多倍,最好的还是日立
: https://www.backblaze.com/blog/best-hard-drive/
a*8
24 楼
做研究最重要的是对科学的passion,动力加兴趣。懒惰拖沓的学生有可能是真懒,也
可能是人并不懒,但是对自己做的事情根本没兴趣--所以懒得做。不管哪种情况基本
都是不负责的人,但凡有责任心,也不会说安排的事情不给做。有的时候,有得学生就
是长期没有成果,疲掉了,自己都没信心,心理上放任逃避。好好和学生谈一下,从希
望她/他好的角度聊,不适合,完全可以拿了master毕业早些工作,不要浪费光阴在费
心费力的ph.d. program上。如果是因为frustration看不到希望所以懒,那就心理上鼓
励,告诉学生最后一次机会,如果能改就留下来,否则好合好散。一定记得有的时候劝
不合适读博士的学生离开对导师对学生都不见得是坏事。明明在年轻最有创造力的时候
浪费光阴还不改变才是真的害自己。
【在 s********p 的大作中提到】
: 对于懒惰喜欢拖沓的学生怎么办?
可能是人并不懒,但是对自己做的事情根本没兴趣--所以懒得做。不管哪种情况基本
都是不负责的人,但凡有责任心,也不会说安排的事情不给做。有的时候,有得学生就
是长期没有成果,疲掉了,自己都没信心,心理上放任逃避。好好和学生谈一下,从希
望她/他好的角度聊,不适合,完全可以拿了master毕业早些工作,不要浪费光阴在费
心费力的ph.d. program上。如果是因为frustration看不到希望所以懒,那就心理上鼓
励,告诉学生最后一次机会,如果能改就留下来,否则好合好散。一定记得有的时候劝
不合适读博士的学生离开对导师对学生都不见得是坏事。明明在年轻最有创造力的时候
浪费光阴还不改变才是真的害自己。
【在 s********p 的大作中提到】
: 对于懒惰喜欢拖沓的学生怎么办?
E*e
26 楼
感觉是蛋蛋不知从哪搞了一批歪货,去相机店买一个吧
相关阅读
换主板cpu,重装win10?Windows 10 ISO最新版本仍然是1511?Win10怎么覆盖安装?电脑在启动后突然自己删除了c盘的所有文件遇上奇葩事了联想的质量真是不行有没有能装下几十个2.5硬盘的盘位或者机箱这个asus的本价格如何?这货可以拿来当nas么请教一个纯索男问题ios访问freenas都用啥应用?remote files放MKV,APECube 这个机器怎么样,好诱人啊双路狂魔们,有没有单机模拟cluster的?PPTP question警告:别买amazon的asus ac68alenovo outlet是不是很多神医用机器人下单?dell 为什么不出R9 390的机子?NAS的功耗散热都怎么样?联想的 X1 Yoga如何?电脑自动哦关机?