问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用C语言编写程序:随机步

发布网友 发布时间:2022-04-25 20:52

我来回答

3个回答

热心网友 时间:2022-06-17 07:30

#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
int main()
{
 char a[10][10];
 int  i=0,j=0,lettercount=1,ran=-1;
 const char base_letter='A';   
 /*初始化*/
 memset(a,'.',100);
 a[0][0]=base_letter;
 srand((int)time(0));
 ///////开始随机选择//////
 while(1)
 {
  ran=((double)rand()/(RAND_MAX+1))*4;//获取随机数
  switch(ran)
  {
  case 0:   //向左走
   if( (i-1) >= 0)   
   {
    if(a[i-1][j]=='.')
    {
     a[i-1][j]=base_letter+lettercount;
     ++lettercount;
     i-=1;
    }
   }
   break;
  case 1:   //向右走
   if( (i+1) < 10)   
   {
    if(a[i+1][j]=='.')
    {
     a[i+1][j]=base_letter+lettercount;
     ++lettercount;
     i+=1;
    }
   }
   break;
  case 2:  //向上走
   if( (j-1) >= 0)
   {
    if(a[i][j-1]=='.')
    {
     a[i][j-1]=base_letter+lettercount;
     ++lettercount;
     j-=1;
    }
   }
   break;
  case 3:  //向下走
   if( (j+1) < 10)
   {
    if(a[i][j+1]=='.')
    {
     a[i][j+1]=base_letter+lettercount;
     ++lettercount;
     j+=1;
    }
   }
   break;
  }
  if(lettercount==26)//如果到Z就退出
   break;
 }
 //打印
 for(i=0;i<10;++i)
 {
  for(j=0;j<10;++j)
   printf("%c ",a[i][j]);
  printf("\n");
 }
 return 0;
}

现写的

热心网友 时间:2022-06-17 07:31

这是一个典型的八数码问题啊,看看算法你就明白了。望采纳

热心网友 时间:2022-06-17 07:31

  //把该程序替换在楼上代码的检测跳出while(1)的条件下!
  if(lettercount==26||(a[i+1][j]!='.')&&(a[i-1][j]!='.')&&(a[i][j+1]!='.')&&(a[i][j-1]!='.'))break;//数字尽头结束和封住走过的路。
  if((i-1<0)&&(j-1<0)&&(a[i+1][j]!='.')&&(a[i][j+1]!='.'))break; //封左上角
  if((i+1>9)&&(j-1<0)&&(a[i+1][j]!='.')&&(a[i][j+1]!='.'))break; //封左下角
  if((i-1<0)&&(j+1>9)&&(a[i+1][j]!='.')&&(a[i][j+1]!='.'))break; //封右上角
  if((i+1>9)&&(j+1>9)&&(a[i+1][j]!='.')&&(a[i][j+1]!='.'))break; //封右下角
  if((i-1<0)&&(a[i+1][j]!='.')&&(a[i][j-1]!='.')&&(a[i][j+1]!='.'))break;//封上边框
  if((i+1>9)&&(a[i-1][j]!='.')&&(a[i][j-1]!='.')&&(a[i][j+1]!='.'))break;//封上边框
  if((j-1<0)&&(a[i-1][j]!='.')&&(a[i+1][j]!='.')&&(a[i][j+1]!='.'))break;//封上边框
  if((j+1>9)&&(a[i-1][j]!='.')&&(a[i+1][j]!='.')&&(a[i][j-1]!='.'))break;//封上边框

我来替一楼封住所有无限循环的进口!哈哈

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
华丽转身为什么在优酷看不了了之 《华丽转身:爱情不在服务区》txt全集下载 翡翠台华丽转身英文曲 matplotlib中plt.imshow函数画图出现的颜色问题 数字图像处理(c++ opencv):形态学图像处理-提取连通域 ...opencv做东西,网上的程序读着还可以,程序遇到问题不会改,一些函_百... 深度学习面试问题总结 | 传统图像处理——OpenCV 活虾如何在晚上保持存活状态进行保存? neu代表什么意思 民办学校和私立学校的区别是什么民办学校和私立学校的区别 说说有哪些让你印象深刻的WIFI密码/名字吧? 你见过哪些奇葩的 WiFi 名和密码? 寝室开了两个WiFi,求一个霸气或者贼逗的牛*WiFi名,寝室617,最好两个名字有互相关联。 桌面上微信图标有的显示有的不显示几条微信? 朋友们 帮我想一个 霸气个性的WiFi名字吧 有深度的wifi名有哪些? 分享一下你有见到过哪些有意思的WiFi名称或密码? 电脑上微信的图标上面有一个管理员运行的标志怎样可以把这个标志去掉... 微信图标上一直有一个红点1可是明明没有新消息了!这事怎么回事... WIFI密码设置什么比较好?搞笑或者~~~,WIFI密码,帐号设置什么比较好?装下*,比如我同学的 微信图标上有个时钟的图案,微信无法一直运行? 为什么单卡4g红米手机突然没有信号打电话说无信号 [小米红米手机1移动版]显示无服务怎么办? 红米手机有卡显示无服务 请问海韵电源怎么样啊 为什么在淘宝 中关村上没有海韵的品牌呢 是不是这个电源没啥名气呢 海尔电视怎样切换至直播电视的模式 rest什么意思 you can stop什么rest the rest of和the rest以及rest的用法和区别, the rest of 和the rest 的区别 用C语言编写程序。 用C语言编写Windows服务程序的五个步骤 C语言程序设计的基本步骤为? 加密的pdf怎么解除密码保护 加密了的pdf如何解密 加密的PDF怎样破解? 看加密的PDF会不会有危险 微整形鼻子多少钱? 目前鼻子微整形多少钱 鼻子微整形的费用需要多少 微整形鼻子手术价格 鼻子微整形一般多少钱 微整形鼻子大概需要多少钱 鼻子微整形多少钱 做鼻子微/整/形多少钱? 我一个同学微整形花了2万多价格高不?主要是鼻子&#128067;那里高了不少 海韵电源是哪个国家生产的 冷冻龙虾尾怎么做好吃 冻的龙虾尾怎么做 如何把乐曲中的某个伴奏音去掉