新手问题!哪个高手帮我看看这段代码什么地方出问题了,编译正确但执行的时候出错了!是我系统神了还是代码出错了 谢谢
hyjz 2004-06-15 04:40:58 #include"iostream.h"
int check(int x,int y,int *p_x,int *p_y,int c)
{ cout<<"1111"<<endl;
int i,line_1,line_2,line=x+y;
int flag=0;
for(i=0;i<c;i++)
{
line_1=((*(p_x+i))+(*(p_y+i)));
line_2=((*(p_x+i))-(*(p_y+i)));
if(x==(*(p_x+i))) {flag=1;break;}
if(y==(*(p_y+i))) {flag=1;break;}
if(line==line_1) {flag=1;break;}
if(line==line_2) {flag=1;break;}
else flag=0;
}
return flag;
}//条件合适返回0 否返回1
void main()
{
int queen_x[8],queen_y[8];//记录皇后坐标X,Y
int i,j,count=0,q,flag,flag_false=0;
int check(int x,int y,int *p_x,int *p_y,int c);
for(q=0;q<8;q++)
{
cout=0;
for(i=1;i<=8;i++)//遍历行
{
for(j=1+q;j<=9;j++)//遍历列
{
if (j>8) {flag_false=1;break;}
flag=1;
flag=check(i,j,queen_x,queen_y,count);
if(flag==0) {queen_x[q]=i;queen_y[q]=j;flag=1;count++;}//成功记录一个皇后位置第一个皇后位置编号为[0]
else continue;
if(flag==1) break;//皇后记录成功跳出本循环,重新遍历行
}//for j
if(flag_false==1) break;//行轮空 跳到下一种解法
}//for i
//if(count==8){
//}//for if
}//for q
for(i=0;i<count;i++)
{
cout<<"第"<<i<<"个皇后的位置是:"<<queen_x[i]<<","<<queen_y[i]<<endl;
}
}