⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 queendlg.cpp

📁 八皇后演示程序,VC6.0开发环境 初学c++ 望指正
💻 CPP
📖 第 1 页 / 共 3 页
字号:
												{ 
													flag=1; 
													break; 
												} 
												if(flag)
													break; 
											} 
											if(!flag)//比较是否在对角线上 
											{
												for( i=6;i>0;i--) 
												{ 
													for(int j=0;j<i;j++) 
													{ 
														m_recoder=A[i]; 
														m_recoder1=A[j]; 
														if(m_recoder1>m_recoder) 
														{ 
															m_recoder1=8-m_recoder1; 
															m_recoder=8-m_recoder; 
														} 
														if(m_recoder-i==m_recoder1-j) 
														{ 
															flag=1; 
															break; 
														} 
													} 
													if(flag) break; 
												} 
											}
											if(!flag) 
											{
												Invalidate();
												total++;
												SetDlgItemInt(IDC_EDIT2,total);
											}
											seven++;
											if (seven==8)
											{
												seven=1;
												six++;
												if (six==8)
												{
													six=1;
													five++;
													if (five==8)
													{
														five=1;
														four++;
														if (four==8)
														{
															four=1;
															three++;
															if (three==8)
															{
																three=1;
																two++;
																if (two==8)
																{
																	two=1;
																	one++;
																	if (one==8)
																	{
																		one=two=three=four=five=six=seven=1;
																		SetDlgItemText(IDC_PAUSE,"结束了");
																		Invalidate();
																		CTime time=CTime::GetCurrentTime();
																		m_tEnd=time;
																		CTimeSpan wholeTime=m_tEnd-m_tStart;
																		CString str;
																		str=time.Format("%H:%M:%S");
																		SetDlgItemText(IDC_ENDTIME,str);
																		str=wholeTime.Format("%H:%M:%S");
																		SetDlgItemText(IDC_TOTALTIME,str);
																		return;
																	}
																}
															}
														}
													}
												}
											}
										}
									}
								}
							}
						}
					}
				}
				break;
		case 2:
			if(one<=7) 
			{
		fa:		if(two<=7) 
				{
		fb:			while (two==one||two==one-1||two==one+1)
					{
						two++;
					}
					if (two>7)
					{
						two=1;
						one++;
						if (one<8)
						{
							goto fa;
						}
						else
						{
							SetDlgItemText(IDC_PAUSE,"结束了");
							Invalidate();
							CTime time=CTime::GetCurrentTime();
							m_tEnd=time;
							CTimeSpan wholeTime=m_tEnd-m_tStart;
							
							CString str;
							str=time.Format("%H:%M:%S");
							SetDlgItemText(IDC_ENDTIME,str);
							str=wholeTime.Format("%H:%M:%S");
							SetDlgItemText(IDC_TOTALTIME,str);
							return;
						}
						
					}
					if(three<=7) 
					{
		fc:				while (three==two||three==two-1||three==two+1||three==one||three==one+2||three==one-2)
						{
							three++;
						}
						if (three>7)
						{
							three=1;
							two++;
							goto fb;
						}
						if(four<=7) 
						{
		fd:					while(four==three||four==three+1||four==three-1||four==two||four==two+2||four==two-2||four==one||four==one-3||four==one+3)
							{
								four++;
							}
							if (four>7)
							{
								four=1;
								three++;
								goto fc;
							}
							if(five<=7) 
							{
		fe:						while(five==four||five==four-1||five==four+1||five==three||five==three-2||five==three+2||five==two||five==two-3||five==two+3||five==one||five==one-4||five==one+4)
								{
									five++;
								}
								if (five>7)
								{
									five=1;
									four++;
									goto fd;
								}
								if(six<=7) 
								{
		ff:							while(six==five||six==five-1||six==five+1||six==four||six==four-2||six==four+2||six==three||six==three-3||six==three+3||six==two||six==two-4||six==two+4||six==one||six==one-5||six==one+5)
									{
										six++;
									}
									if (six>7)
									{
										six=1;
										five++;
										goto fe;
									}
									if(seven<=7) 
									{ 
										while(seven==six||seven==six-1||seven==six+1||seven==five||seven==five-2||seven==five+2||seven==four||seven==four-3||seven==four+3||seven==three||seven==three-4
											||seven==three+4||seven==two||seven==two-5||seven==two+5||seven==one||seven==one-6||seven==one+6)
										{
											seven++;
										}
										if (seven>7)
										{
											seven=1;
											six++;
											goto ff;
										}
											// 为了便于运算数组里 
											A[0]=one;
											A[1]=two;
											A[2]=three;
											A[3]=four;
											A[4]=five;
											A[5]=six;
											A[6]=seven;
											//比较是否在同一列 
											flag=0; 
											for(int i=6;i>0;i--) 
											{ 
												for(int j=0;j<i;j++) 
												if(A[i]==A[j]) 
												{ 
													flag=1; 
													break; 
												} 
												if(flag)
													break; 
											} 
											if(!flag)//比较是否在对角线上 
											{
												for( i=6;i>0;i--) 
												{ 
													for(int j=0;j<i;j++) 
													{ 
														m_recoder=A[i]; 
														m_recoder1=A[j]; 
														if(m_recoder1>m_recoder) 
														{ 
															m_recoder1=8-m_recoder1; 
															m_recoder=8-m_recoder; 
														} 
														if(m_recoder-i==m_recoder1-j) 
														{ 
															flag=1; 
															break; 
														} 
													} 
													if(flag) break; 
												} 
											}
											if(!flag) 
											{
												Invalidate();
												total++;
												SetDlgItemInt(IDC_EDIT2,total);
											}
											seven++;
											if (seven==8)
											{
												seven=1;
												six++;
												if (six==8)
												{
													six=1;
													five++;
													if (five==8)
													{
														five=1;
														four++;
														if (four==8)
														{
															four=1;
															three++;
															if (three==8)
															{
																three=1;
																two++;
																if (two==8)
																{
																	two=1;
																	one++;
																	if (one==8)
																	{
																		one=two=three=four=five=six=seven=1;
																	}
																}
															}
														}
													}
												}
											}
									}
								}
							}
						}
					}
				}
			}
			break;
		case 3:
			{
				
				if (m_Judge1)
				{
					solve(1);
					m_num=m_LineNum.GetSize();
					m_Judge1=FALSE;
				}
				break;
			}
		}
		Invalidate();
	}
	
}

void CQueenDlg::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	UpdateData();
	switch(m_chose) {
	case 1:
		if(one<=7) 
		{
			if(two<=7) 
			{
				if(three<=7) 
				{
					if(four<=7) 
					{
						if(five<=7) 
						{
							if(six<=7) 
							{
								if(seven<=7) 
								{
										// 为了便于运算数组里 
										A[0]=one;
										A[1]=two;
										A[2]=three;
										A[3]=four;
										A[4]=five;
										A[5]=six;
										A[6]=seven;
										//比较是否在同一列 
										flag=0; 
										for(int i=6;i>0;i--) 
										{ 
											for(int j=0;j<i;j++) 
											if(A[i]==A[j]) 
											{ 
												flag=1; 
												break; 
											} 
											if(flag)
												break; 
										} 
										if(!flag)//比较是否在对角线上 
										{
											for(int i=6;i>0;i--) 
											{ 
												for(int j=0;j<i;j++) 
												{ 
													m_recoder=A[i]; 
													m_recoder1=A[j];
													if(m_recoder1>m_recoder) 
													{ 
														m_recoder1=8-m_recoder1;
														m_recoder=8-m_recoder; 
													} 
													if(m_recoder-i==m_recoder1-j) 
													{ 
														flag=1; 
														break; 
													} 
												} 
												if(flag) break; 
											} 
										}
										if(!flag) 
										{
											Invalidate();
											total++;
											SetDlgItemInt(IDC_EDIT2,total);
										}
										seven++;
										if (seven==8)
										{
											seven=1;
											six++;
											if (six==8)
											{
												six=1;
												five++;
												if (five==8)
												{
													five=1;
													four++;
													if (four==8)
													{
														four=1;
														three++;
														if (three==8)
														{
															three=1;
															two++;
															if (two==8)
															{
																two=1;
																one++;
																if (one==8)
																{
																	one=two=three=four=five=six=seven=1;
																	SetDlgItemText(IDC_PAUSE,"结束了");
																	Invalidate();
																	CTime time=CTime::GetCurrentTime();
																	m_tEnd=time;
																	CTimeSpan wholeTime=m_tEnd-m_tStart;
																	CString str;
																	str=time.Format("%H:%M:%S");
																	SetDlgItemText(IDC_ENDTIME,str);
																	str=wholeTime.Format("%H:%M:%S");
																	SetDlgItemText(IDC_TOTALTIME,str);
																	KillTimer(1);
																	return;
																}
															}
														}
													}
												}
											}
										}
									}
								}
							}
						}
					}
				}
			}
			break;
	case 2:
		if(one<=7) 
		{
	fa:		if(two<=7) 
			{
	fb:			while (two==one||two==one-1||two==one+1)
				{
					two++;
				}
				if (two>7)
				{
					two=1;
					one++;
					if (one<8)
					{
						goto fa;
					}
					else
					{
						SetDlgItemText(IDC_PAUSE,"结束了");
						Invalidate();
						CTime time=CTime::GetCurrentTime();
						m_tEnd=time;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -