您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> C/C++ >> 的问题,可能是数组方面弄错了,多多指教

的问题,可能是数组方面弄错了,多多指教

来源:网络整理     时间:2016/9/5 2:21:06     关键词:

关于网友提出的“ 的问题,可能是数组方面弄错了,多多指教”问题疑问,本网通过在网上对“ 的问题,可能是数组方面弄错了,多多指教”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 的问题,可能是数组方面弄错了,多多指教
描述:

/*
 残缺棋盘 的问题,我的代码有那么一点疑问,但是我总是不知道它为什么不对?在函数OutputBoard(int size)中的四个if语句部分,希望各位指点一下
*/
#include
using namespace std;
int Board[100][100],amount=0;
void OutputBoard(int size)
{
int i,j;
for(i=0;i<>
{
for(j=0;j<>
{
if(Board[i][j]<10)cout<<"  ";
else cout<<" ";
cout<<>
}
cout<<>
}
}
//[h2,l2]残缺方格的坐标
void Cover(int h1,int l1,int h2,int l2,int size)
{
if(size<2)return;
int s,t;
s=size/2;
amount++;//计算放置棋子的号码
t=amount;//放置棋子的号码
//判断语句里与[s,s]比较
//每一个if都是在解决一个小问题
if(h2<>
{
Cover(h1,l1,h2,l2,s);//cover左上角的棋盘
//cover中间部分//当s=1
Board[h1+s][l1+s]=t;
Board[h1+s-1][l1+s]=t;
Board[h1+s][l1+s-1]=t;
Cover(h1,l1+s,h1+s-1,l1+s,s);//cover右上角
Cover(h1+s,l1,h1+s,l1+s-1,s);//cover左下角
Cover(h1+s,l1+s,h1+s,l1+s,s);//cover右下角
}
else if(h2=l1+s)//cover左下角
{
Cover(h1,l1+s,h2,l2,s);
Board[h1+s][l1+s-1]=t;
Board[h1+s][l1+s]=t;
Board[h1+s-1][l1+s-1]=t;
Cover(h1,l1,h1+s-1,l1+s-1,s);//cover左上角
Cover(h1,l1+s,h1+s,l1+s-1,s);//cover左下角
Cover(h1+s,l1+s,h1+s,l1+s,s);//cover右下角
}
else if(h2>=h1+s&&l2
{
Cover(h1+s,l1,h2,l2,s);
Board[h1+s][l1+s]=t;
Board[h1+s-1][l1+s]=t;
Board[h1+s-1][l1+s-1]=t;
Cover(h1,l1+s,h1+s-1,l1+s,s);//cover左上角
Cover(h1,l1,h1+s-1,l1+s-1,s);//cover右上角
Cover(h1+s,l1+s,h1+s,l1+s,s);//cover右下角
}
else if(h2>=h1+s&&l2>=l1+s)//残缺方格在右下角
{
Cover(h1+s,l1+s,h2,l2,s);
Board[h1+s-1][l1+s-1]=t;
Board[h1+s-1][l1+s]=t;
Board[h1+s][l1+s-1]=t;
Cover(h1,l1+s,h1+s-1,l1+s,s);
Cover(h1+s,l1,h1+s,l1+s-1,s);
Cover(h1+s,l1+s,h1+s-1,l1+s-1,s);
}
}
int main()
{
int h1=0,l1=0,h2,l2;
int s,size=1;
int i,j;
cin>>s;
for(i=0;i<>
{
size*=2;//棋盘大小
}
cin>>h2>>l2;
Cover(h1,l1,h2,l2,size);
OutputBoard(size);
return 0;
}


解决方案1:

if(Board[i][j]<10)cout<<"  ";//这里两个空格
else cout<<" ";
我测了一下逻辑错误
左下角时 改为 Cover(h1+s,l1,h1+s,l1+s-1,s);//cover左下角
右下角时 最后一行 改 Cover(h1,l1,h1+s-1,l1+s-1,s); 

解决方案2:

if(Board[i][j]<10)cout<<" ";
else cout<<" ";
>>这个有区别吗?没用吧
貌似编译通过了,逻辑错误就要自己debug了


以上介绍了“ 的问题,可能是数组方面弄错了,多多指教”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3743370.html

相关图片

相关文章