| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 960 人关注过本帖
标题:[求助]有点错误的编程,大家一起改正一下吧
取消只看楼主 加入收藏
小先
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-7-9
收藏
 问题点数:0 回复次数:7 
[求助]有点错误的编程,大家一起改正一下吧

下面的这是我自己参考网上搜的那个程序改的,可是运行不出正确结果来,还请大家帮忙看看,错误出在哪里,拜托各位了,不胜感激!

#include"stdio.h"
#include"conio.h"
main()
{ int a[21][21]={0};
int i,j,k,s,m,t,N,sum;
clrscr();
printf("Please input 4<=N<=21: N=");
scanf("%d",&N);
for(i=0;i<N;i++)
for(j=0;j<N;j++)
for(a[i][j]=0;a[i][j]<=1;a[i][j]++)
{ s=a[i-1][j]; /*上*/
if(i-2>=0) s+=a[i-2][j]; /*上上*/
if(i-1>=0) {if(j-1>=0)
s+=a[i-1][j-1]; /*上左*/
if(j+1<N) s+=a[i-1][j+1]; /*上右*/
}
if(s<=1) a[i][j]=1-s; /*self*/
else if(s<=3) a[i][j]=3-s;
else a[i][j]=1;
for(k=0;k<N;k++)
{ t=a[N-1][k]+a[N][k]; /*上self*/
if(k-1>=0) t+=a[N][k-1]; /* 左*/
if(k+1<N) t+=a[N][k+1]; /*右*/
if(t%2==0) continue;
}
if(k==N) {printf("\n OK!\n");
sum=0;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
{ sum+=a[i][j];
if((i*N+j)%k==0) printf("\n");
printf("%2d",a[i][j]);}
printf("\nDian ji ci shu:%2d.\n\n",sum);
getch();
}
}

}
等待中。。。。。。

搜索更多相关主题的帖子: 编程 不胜感激 include 
2006-07-09 17:01
小先
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-7-9
收藏
得分:0 
大家都帮一下忙吗!实在是很着急,拜托了!
2006-07-09 17:33
小先
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-7-9
收藏
得分:0 
什么吗,不是说这个论坛上好多高手吗?怎么会没有人回复呀!拜托大家帮帮忙哦!
2006-07-10 08:45
小先
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-7-9
收藏
得分:0 

恩,好的,希望能帮一下忙啊!

课题题目:点灯游戏
课题要求:输入:N值
输出:将全部灯点亮的最少步数
课题内容:点灯游戏是一个十分有趣的智力游戏,他的规则是这样的:有一行N行N列的灯,开始时全部是灭的,当你点击其中一盏灯是他的上下左右(若存在的话)状态全部改变,现在要求你在限定的时间内以最少的步数,将全部的灯点亮.

2006-07-11 08:57
小先
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-7-9
收藏
得分:0 

我不是坐等答案的,所以还希望大家帮忙啊,上面那个是二维数组表示的,下面这是一维数组表示的,不过运行出来的结果总是错的!

#include"stdio.h"
#include"Conio.h"
main()
{
int row;
int a[500]={0},t,i,j,m,n,k,s,ss,sum;
clrscr();
printf("Please input 4=<row<=21 :");
scanf("%d",&row);
for(t=0;t<=row*row-1;t++)
for(a[t]=0;a[t]<=1;a[t]++)
{ for(k=0;k<row;k++)
for(i=1;i<row;i++) /* OUT 1 ROW */
for(j=0;j<row;j++)
{ s=a[(i-1)*row+j]; /* 上 */
if(i-2>=0) s+=a[(i-2)*row+j]; /*上上 */
if(i-1>=0) { if(j-1>=0) s+=a[(i-1)*row+j-1]; /*上左 */
if(j+1<row) s+=a[(i-1)*row+j+1]; /*上右 */
}
if(s<=1) a[i*row+j]=1-s; /*self */
else if(s<=3) a[i*row+j]=3-s;
else a[i*row+j]=1;
}
m=row-1;
for(n=0;n<row;n++) /*Judge last row ok? */
{ ss=a[m*row+n]+a[(m-1)*row+n]; /*上 self */
if(n-1>=0) ss+=a[m*row+n-1]; /*左 */
if(n+1<row) ss+=a[m*row+n+1]; /*右 */
if(ss%2==0) continue;
}
if(n==row) { printf("\n OK !\n");
sum=0;
for(i=0;i<n*n;i++)
{ sum+=a[i];
printf("%2d",a[i]);
if((i+1)%n==0)printf("\n");
} printf("dian ji ci shu :%d.\n", sum);
getch();
}
}
}



2006-07-11 09:38
小先
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-7-9
收藏
得分:0 
我知道错在哪里了,不过不会改正,大家再帮忙想想啊,就是第一步的循环,实际上应该是将第一行的N个元素用嵌套循环。比如如果是五行五列的话,就是
for(a[0]=0;a[0]<=1;a[0]++)
for(a[1]=0;a[1]<=1;a[1]++)
for(a[2]=0;a[2]<=1;a[2]++)
for(a[3]=0;a[3]<=1;a[3]++)
for(a[4]=0;a[4]<=1;a[4]++)
现在是N行N列,也就是要N层嵌套,不知道怎么表示啊,大家再帮一下忙吧!
2006-07-11 18:27
小先
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-7-9
收藏
得分:0 
说的容易啊,达不到我的要求啊,我表示不出来了,不知你有什么好的表示方法啊
2006-07-12 09:22
小先
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-7-9
收藏
得分:0 
以下是引用wfpb在2006-7-12 18:00:36的发言:

我看不下去你的算法,看着有点头痛, 你就说下,这个算法如何达到步数最小这个要求的吧~!

现在就差使用N层嵌套了。你帮我想想用递归如何实现啊?明天就要交作业了,今天上午是最后一次上机实习了!不过虽然作业上没能实现,我还是想搞清楚啊

2006-07-13 10:10
快速回复:[求助]有点错误的编程,大家一起改正一下吧
数据加载中...
 
   



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

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