| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 588 人关注过本帖
标题:求救:vc编一程序老出错
只看楼主 加入收藏
xiaohutushen
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-9-12
收藏
 问题点数:0 回复次数:2 
求救:vc编一程序老出错

求指点迷津 大意是: N*N的正方形中有1-N*N,任意变换使之横竖斜线上的和都相等. #define N 3 #define M N*N-1 #include <iostream.h>

class Array{ public: int a[M+1]; int i,k; Array( ){ for(i=0;i<=M;i++) a[i]=i+1; }

bool _ture(int a[]){ int num1=0,num2=0; bool t=true; int c[N][N],d[N][2]; for(i=0;i<N;i++) for(k=0;k<N;k++) c[i][k]=a[i*N+k]; for(i=0;i<N;i++) for(k=0;k<2;k++) d[i][k]=0; for(i=0;i<N;i++){ for(k=0;k<N;k++){ d[i][0]+=c[i][k]; d[i][1]+=c[k][i]; } num1+=c[i][i]; num2+=c[i][N-i-1]; } if(num1==num2){ for(i=0;i<N;i++){ if((num1==d[i][0])&&(num1==d[i][1])) t=true; else return false; } return t; } else return false; }

void _cha(int *x,int *y){ int t; t=*x; *x=*y; *y=t; }

void go(int *p1){ int *q,*w; //while(!(_ture(a))&&p1>=a){ while((a[0]<2)){ if(*p1>*(p1-1)){ q=a+M; while(q>=p1){ if(*q>*(p1-1)) _cha(q,p1-1); q--; } for(i=0;i<a+M-p1;i++){ w=p1; while(w<a+M){ if((*w)>*(w+1)) _cha(w,w+1); w++; } } go(&a[M]); } else go(p1-1); } } }; void main(){ int i,k; Array array; array.go(&array.a[M]);

cout<<"结果如下:" <<endl; for(i=0;i<N;i++){ cout<<"\n"; for(k=0;k<N;k++){ cout<<array.a[i*N+k]; } cout<<"\n"; } }

搜索更多相关主题的帖子: include public 正方形 
2005-09-12 00:39
stnlcd
Rank: 1
等 级:新手上路
帖 子:177
专家分:1
注 册:2004-11-21
收藏
得分:0 
for(i=0;i&lt;=M;i++)
             a[i]=i+1;
地址越界。
应该是for(i=0;i&lt;M;i++)  a[i]=i+1;吧

要让一个男人破产,请给他一架相机,要让一个男人倾家荡产,请给他一架望远镜。
2005-09-12 14:10
xiaohutushen
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-9-12
收藏
得分:0 

对!

2005-09-18 10:06
快速回复:求救:vc编一程序老出错
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011538 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved