首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

无奈的输出,该怎么处理

2013-04-20 
无奈的输出问题是这样的设M是一个n*n 的整数矩阵,其中每一行和每一列都是安生序排列的,设计算法确定一个给

无奈的输出

问题是这样的设M是一个n*n 的整数矩阵,其中每一行和每一列都是安生序排列的,设计算法确定一个给定的整数 x是否在M中
 我不才这几了一个很拙陋的算法,但运行不出结果,那位大神能帮忙改一下,谢谢
#include<iostream>
 using namespace std;
 
int zheban(int a[],int r,int l,int x)
 {
int len=l-r;
if(len==0)
return -1;
 if(r>l)
 return 0;
 else
 {
 int mid=(r+l)/2;
 if(x<a[mid])
 return zheban(a,r,mid,x);
 if(x>a[mid])
 return zheban(a,mid+1,l,x);
 else
 return mid;
 }
 }
 

void chazhaox(int a[][4],int n,int x,int i)
 { 

 int b[4];
 
if(a[i][0]>x&&x<a[i][n-1])


 {
 for(int j=0;j<4;j++)
 {
 b[j]=a[i][j] ;
 }
 int y=zheban(b,0,n,x);
 if(y==0)
   return ;
 if(y>0)
 {
 cout<<"找到了"<<endl;
cout<<"是在"<<i+1<<"行"<<y+1<<"列"<<endl;

 

 }
 
                       
 }
else 
return ;
 
}

 void main()
 {
 
int x;
 int a[4][4];
 cout<<"输入二维数组中的元素"<<endl;
 for(int i=0;i<4;i++)
 for(int j=0;j<4;j++)
 cin>>a[i][j];
 cin.clear();
 cout<<"输入要查找的值"<<endl;
 
 cin>>x;
 for( i=0;i<4;i++)
 {              
          
 chazhaox(&a[i], 4,x,i);
 


 }
 
}

[解决办法]
查找函数里:


if( (a[i][0] > x) && (x < a[i][n-1]) ) // 这个语句就有矛盾了
// 比方说a[i][0] = 1,a[i][n-1] = 4,x = 3, 根本就进不了if语句的
// 还有,你的方法有些繁琐,可以简略很多,自己调式调式,不清晰的话就单步
// 跟踪,这个能把狐狸妖精都能整出来,最后祝你好运!


[解决办法]

for(int i=0;i<4;i++)
{
    chazhaox(&a[i], 4,x,i); //这里错了,改为chazhaox(a, 4, x, i);
}


if(a[i][0]>x&&x<a[i][n-1])// 这里逻辑错误,改为if(a[i][0]<=x&&x<=a[i][n-1])

热点排行