软考程序员教程重点提炼之螺旋矩阵算法

程序员 责任编辑:小狐狸 2016-08-15

添加老师微信

备考咨询

加我微信

摘要:下面是希赛软考学院为大家提供的软考程序员教程重点提炼之旋矩阵算法,希望能帮助学友们。

       >>>>点击进入了解程序员培训视频

   >>>>点击进入了解程序员在线辅导

 >>>>点击进入了解程序员考试教材


       下面是希赛软考网为大家提供的软考程序员教程重点提炼之旋矩阵算法,希望能帮助学友们。


       这个问题看似很难,但是其实只有有了正确的,规范的逻辑思想算法以后(就像看了这个算法以后),感觉其实这个问题很简单,于是我们不但要学习高深的算法,还要掌握一流的逻辑思维理念。这个算法值得我们学习的地方就是他的数学建模思想,把复杂的问题抽象出来,成为了4个方向的结构式模块组合,于是复杂的问题就简单化了!!!

       #include<iostream>

       #include<iomanip>

       using namespace std;

       void right();//向左输入的赋值函数

       void down();

       void left();

       void up();

       void show();//显示函数

       void sort();//控制方向的函数

       int value;

       int direction=0;//控制方向

       int rightNum=0;//向右输入一行的次数

       int downNum=0;

       int leftNum=0;

       int upNum=0;

       int arrayNum=0;//自增赋值数

       int row=0;//保存行下标

       int col=0;//保存列下标

       int array[100][100];//保存数组

       int main(int argc,char*argv[])

       {

       cout<<\"N*N,enter N:\">>endl;

       cin>>value;

       sort();

       show();

       system(\"pause\");

       return 0;

       }

       void sort()

       {

       while(arrayNum!=value*value)//循环跳出条件,赋值完毕

       {

       switch(direction)

       {

       case 0:

       right();

       break;

       case 1:

       down();

       break;

       case 2:

       left();

       break;

       case 3:

       up();

       break;

       default:

       break;

       }

       }

       return;

       }

       void right()

       {

       int m=row;

       int n=col;

       if(m==0&&n==0)

       {

       array[m][n]=++arrayNum;

       }

       for(int i=n+1;i<value-rightNum;i++)

       {

       array[m]<i>=++arrayNum;

       n++;

       }

       row=m;

       col=n;

       rightNum++;

       direction=1;

       return;

       }

       void down()

       {

       int m=row;

       int n=col;

       for(int i=m+1;i<value-downNum;i++)

       {

       array<i>[n]=++arrayNum;

       m++;

       }

       row=m;

       col=n;

       downNum++;

       direction=2;

       return;

       }

       void left()

       {

       int m=row;

       int n=col;

       for(int i=n-1;i>=leftNum;i--)

       {

       array[m]<i>=++arrayNum;

       n--;

       }

       row=m;

       col=n;

       leftNum++;

       direction=3;

       return;

       }

       void up()

       {

       int m=row;

       int n=col;

       for(int i=m-1;i<upNum;i--)

       {

       array<i>[n]=++arrayNum;

       m--;

       }

       row=m;

       col=n;

       upNum++;

       direction=0;

       return;

       }

       void show()

       {

       int n=0;

       for(int i=0;i<value;i++)

       {

       for(int j=0;j<value;j++)

       {

       cout<<setw(value)<<array<i>[j];

       }

       cout<<endl;

       }

       }


       返回目录:软考程序员教程重点提炼之算法实例汇总


       希赛软考网拥有十四年软考培训经验希赛网一直坚持自主研发,将丰富的软考培训经验有效融入教程研发过程,自成体系的软考在线题库软考历年真题)、软考培训教材软考视频教程多样的培训方式包括在线辅导面授使考生的学习更具系统性,辅导更具针对性。采用全程督学机制,软考平均通过率在全国。

更多资料
更多课程
更多真题
温馨提示:因考试政策、内容不断变化与调整,本网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!

软考备考资料免费领取

去领取

!
咨询在线老师!