104.数字移动

简介: 104.数字移动
#include<stdio.h>
int a[]={0,1,2,5,8,7,6,3};     /*指针数组.依次存入矩阵中构成环的元素下标*/
int b[9];                      /*表示3X3矩阵,b[4]为空格*/
int c[9];                      /*确定1所在的位置后,对环进行调整的指针数组*/
int count=0;                   /*数字移动步数计数器*/
void main()
{
   int i,j,k,t;
   void print();
   clrscr();
   puts("*****************************************************");
   puts("*         This is a program to Move Numbers.        *");
   puts("*****************************************************");
   printf(" >> Please enter original order of digits 1~8: ");
   for(i=0;i<8;i++)
      scanf("%d",&b[a[i]]);
               /*顺序输入矩阵外边的8个数字,矩阵元素的顺序由指针数组的元素a[i]控制*/
   printf("The sorting process is as felow:\n");
   print();
   for(t=-1,j=0;j<8&&t==-1;j++)          /*确定数字1所在的位置*/
      if(b[a[j]]==1) t=j;                 /*t:记录数字1所在的位置*/
   for(j=0;j<8;j++)     /*调整环的指针数组,将数字1所在的位置定为环的首*/
      c[j]=a[(j+t)%8];
   for(i=2;i<9;i++)         /*从2开始依次调整数字的位置*/
                        /*i:正在处理的数字,i对应在环中应当的正确位置就是i-1*/
      for(j=i-1;j<8;j++)     /*从i应处的正确位置开始顺序查找*/
   if(b[c[j]]==i&&j!=i-1)      /*若i不在正确的位置*/
         {
            b[4]=i;          /*将i移到中心的空格中*/
      b[c[j]]=0;print();     /*空出i原来所在的位置,输出*/
            for(k=j;k!=i-1;k--)    /*将空格以前到i的正确位置之间的数字依次向后移动一格*/
            {
         b[c[k]]=b[c[k-1]];    /*数字向后移动*/
         b[c[k-1]]=0;
               print();
            }
      b[c[k]]=i;         /*将中间的数字i移入正确的位置*/
            b[4]=0;            /*空出中间的空格*/
            print();
            break;
         }
   else if(b[c[j]]==i) break;       /*数字i在正确的位置*/
    printf("\n Press any key to quit...");
    getch();
}
void print(void)        /*按格式要求输出矩阵*/
{
   int c;
   printf(" >> Step No.%2d  ",count++);
   for(c=0;c<9;c++)
      if(c%3==2) printf("%2d  ",b[c]);
      else  printf("%2d",b[c]);
   printf("\n");
}
相关文章
|
存储 算法 编译器
【C++ 字符数组的模板特化】面向字符串的C++模板特化:理解与实践
【C++ 字符数组的模板特化】面向字符串的C++模板特化:理解与实践
534 1
|
Java Nacos
对于Nacos 2.x版本,默认是通过gRPC协议进行通信的
对于Nacos 2.x版本,默认是通过gRPC协议进行通信的
1936 7
|
机器学习/深度学习 人工智能 达摩院
AIGC玩转卡通化技术实践
伴随着持续不断的AIGC浪潮,越来越多的AI生成玩法正在被广大爱好者定义和提出,图像卡通化(动漫化)基于其还原效果高,风格种类丰富等特点而备受青睐。早在几年前,伴随着GAN网络的兴起,卡通化就曾经风靡一时。而今,伴随着AIGC技术的兴起和不断发展,扩散生成模型为卡通化风格和提供了更多的创意和生成的可能性。本文就将详细介绍达摩院开放视觉团队的卡通化技术实践。
|
SQL 人工智能 算法
Android性能优化之应用瘦身(APK瘦身)
Android性能优化之应用瘦身(APK瘦身)
|
9月前
|
存储 关系型数据库 MySQL
基于python+vue的商城购物系统
本文介绍了电子商务的发展背景及研究现状,分析了当前电商市场的挑战与机遇,提出了自建电商平台的优势,旨在通过创新设计与技术实现(如Python、Django、B/S架构等),构建一个高效、低成本、用户导向的电商系统,以提升企业竞争力。
|
8月前
|
运维 开发者 Docker
一、Docker:一场颠覆应用部署与运维的容器革命
Docker的出现,就是为了解决“在我电脑上能跑”这个老大难问题。它像个魔法集装箱,把你的程序和它需要的所有东西(比如库、配置)都打包好,这样无论在哪运行,环境都一模一样。理解它很简单,就三个核心玩意儿:镜像是程序的“安装包”,容器是跑起来的程序,而仓库就是存放和分享这些“安装包”的地方。
649 6
|
9月前
|
机器学习/深度学习 移动开发 算法
改进的激光方法与更快的矩阵乘法——论文阅读
Josh Alman与Virginia Vassilevska Williams在2021年提出改进的激光方法,将矩阵乘法指数ω的上界从2.37287降至2.37286。虽改进微小,但标志着自1986年以来核心技术的重要突破,展示了激光方法的潜力与优化空间。
314 3
|
SQL Unix API
夏令时的坑:你的数据库真的能正确处理时间跳变吗?
时区是地球上使用相同标准时间的区域。由于地球的自转,为了保证各地的时间与当地的日出日落相协调,全球划分为多个时区。
661 0
|
存储 数据库 时序数据库
InfluxDB的安装与Python调用
InfluxDB是一个高性能的时序数据库(Time-Series Database, TSDB),用于存储和分析时间序列数据的开源数据库,它非常适合于处理大量的时间戳数据,如金融市场数据、IoT 设备数据、监控数据等,尤其适合处理大量的时序数据和高频数据。 主要特性有: • 内置HTTP接口,使用方便 • 数据可以打标记,查询可以很灵活 • 类SQL的查询语句 • 安装管理很简单,并且读写数据很高效 • 能够实时查询,数据在写入时被索引后就能够被立即查出
InfluxDB的安装与Python调用