历届金头盔飞行员:急急急!!谁会改程序??

来源:百度文库 编辑:高考问答 时间:2024/05/10 03:57:22
请用cin,cout改下面的输入、输出
#include "stdio.h"
#define MAXN 20
int n, s; //该程序不用数组的第0个元素
int col[MAXN+1], a[MAXN+1];//col[i]第i行皇后所在的列;a[i]=0
//则表示第i列已经有皇后了
int b[2*MAXN+1], c[2*MAXN+1];//b[i]=0表示x+y=i的直线已经有皇后
//占了;c[i]=0表示x+n-y=i的直线已经有皇后占了
void queen(int k, int n)
{
int i, j;
char awn;
for (i=1; i<=n; i++)
if (a[i]&&b[k+i]&&c[n+k-i]) //判断新放一个皇后所在列,
//和两条斜线有无其他皇后
{
col[k]=i;
a[i]=b[k+i]=c[n+k-i]=0;
if (k==n)
{
s++;
printf("\nAnswer: %d\n", s);
for (j=1; j<=n; j++) printf("(%d,%d)\t", j, col[j]);
printf("\nPress any key to continue......");
scanf("%c", &awn);
}
else queen(k+1, n); //递归,进行下一个皇后的放置
a[i]=b[k+i]=c[n+k-i]=1; //回溯,返回上一个皇后
}
}
void main(void)
{
int i;
printf("\nEnter n:");
scanf("%d", &n);
for (i=0; i<=n; i++) a[i]=b[i]=c[i]=1;
for (;i<=2*n;i++) b[i]=c[i]=1;
s=0;
queen(1, n);
}
我只要8*8的,也帮改一下

#include "iostream.h"
#define MAXN 20
int n, s; //该程序不用数组的第0个元素
int col[MAXN+1], a[MAXN+1];//col[i]第i行皇后所在的列;a[i]=0
//则表示第i列已经有皇后了
int b[2*MAXN+1], c[2*MAXN+1];//b[i]=0表示x+y=i的直线已经有皇后
//占了;c[i]=0表示x+n-y=i的直线已经有皇后占了
void queen(int k, int n)
{
int i, j;
char awn;
for (i=1; i<=n; i++)
if (a[i]&&b[k+i]&&c[n+k-i]) //判断新放一个皇后所在列,
//和两条斜线有无其他皇后
{
col[k]=i;
a[i]=b[k+i]=c[n+k-i]=0;
if (k==n)
{
s++;
cout<<"\nAnswer:"<<s<<endl;
for (j=1; j<=n; j++)
cout<<"("<<j<<","<<col[j]<<")"<<"\t";
cout<<"\nPress any key to continue......";
cin>>awn; //scanf("%c", &awn); 这个用来停顿的!
}
else queen(k+1, n); //递归,进行下一个皇后的放置
a[i]=b[k+i]=c[n+k-i]=1; //回溯,返回上一个皇后
}
}
void main(void)
{
int i;
cout<<"\nEnter n:";
cin>>n;
for (i=0; i<=n; i++) a[i]=b[i]=c[i]=1;
for (;i<=2*n;i++) b[i]=c[i]=1;
s=0;
queen(1, n);
}

#include "stdio.h"
#include<iostream>
using namespace std;
#define MAXN 20
int n, s; //该程序不用数组的第0个元素
int col[MAXN+1], a[MAXN+1];//col[i]第i行皇后所在的列;a[i]=0
//则表示第i列已经有皇后了
int b[2*MAXN+1], c[2*MAXN+1];//b[i]=0表示x+y=i的直线已经有皇后
//占了;c[i]=0表示x+n-y=i的直线已经有皇后占了
void queen(int k, int n)
{
int i, j;
char awn;
for (i=1; i<=n; i++)
if (a[i]&&b[k+i]&&c[n+k-i]) //判断新放一个皇后所在列,
//和两条斜线有无其他皇后
{
col[k]=i;
a[i]=b[k+i]=c[n+k-i]=0;
if (k==n)
{
s++;
cout<<"\nAnswer: "<<s<<endl;
for (j=1; j<=n; j++) printf("(%d,%d)\t", j, col[j]);
cout<<"\nPress any key to continue......";
cin>>awn;
}
else queen(k+1, n); //递归,进行下一个皇后的放置
a[i]=b[k+i]=c[n+k-i]=1; //回溯,返回上一个皇后
}
}
void main(void)
{
int i;
cout<<"\nEnter n:";
cin>>n;
for (i=0; i<=n; i++) a[i]=b[i]=c[i]=1;
for (;i<=2*n;i++) b[i]=c[i]=1;
s=0;
queen(1, n);
}

修改的时候要添加头文件
#include"iostream.h"
然后scanf-〉cin
printf-〉cout

下面是修改后,已经编译运行后的程序:

#include "stdio.h"
#include "iostream.h"
#define MAXN 20
int n, s; //?程序不用数?的第0个元素
int col[MAXN+1], a[MAXN+1];//col[i]第i行皇后所在的列;a[i]=0
//?表示第i列已?有皇后了
int b[2*MAXN+1], c[2*MAXN+1];//b[i]=0表示x+y=i的直?已?有皇后
//占了;c[i]=0表示x+n-y=i的直?已?有皇后占了
void queen(int k, int n)
{
int i, j;
char awn;
for (i=1; i<=n; i++)
if (a[i]&&b[k+i]&&c[n+k-i]) //判断新放一个皇后所在列,
//和?条斜?有无其他皇后
{
col[k]=i;
a[i]=b[k+i]=c[n+k-i]=0;
if (k==n)
{
s++;
//printf("\nAnswer: %d\n", s);
cout<<"\nAnswer: "<<s<<endl;
for (j=1; j<=n; j++) printf("(%d,%d)\t", j, col[j]);
//printf("\nPress any key to continue......");
cout<<"\nPress any key to continue......"<<endl;
//scanf("%c", &awn);
cin>>awn;
}
else queen(k+1, n); //??,?行下一个皇后的放置
a[i]=b[k+i]=c[n+k-i]=1; //回溯,返回上一个皇后
}
}
void main(void)
{
int i;
//printf("\nEnter n:");
cout<<"\nEnter n:";
//scanf("%d", &n);
cin>>n;
for (i=0; i<=n; i++) a[i]=b[i]=c[i]=1;
for (;i<=2*n;i++) b[i]=c[i]=1;
s=0;
queen(1, n);
}

cin,cout是C++中的输入输出函数,相当于C语言中的scanf和printf,使用时只要导入iostream.h头文件,就可以使用这两个输入输出函数了

麻烦