文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>编程练习-螺旋数组

编程练习-螺旋数组

时间:2010-11-02  来源:中道学友

#include <iostream>
#include <cmath>

using namespace std;

int iMatrix[100][100];

void FillEdge(int width, int layer)
{
    // Up right corner
    int temp = iMatrix[layer][width - 1 - layer] = (width - layer - layer) * (width - layer -layer);

    // Up edge
    for( int i = width - 1 - layer; i >= layer; --i)
        iMatrix[layer][i] = temp--;

    // Left edge
    for( int j = 1 + layer; j < width - layer; ++j)
        iMatrix[j][layer] = temp--;

    // Low edge
    for( int i = 1 + layer; i < width - layer; ++i)
        iMatrix[width - 1 - layer][i] = temp--;

    // Right edge
    for( int j = width - 2 - layer; j > layer; --j)
        iMatrix[j][width - 1 - layer] = temp--;
}

void Print(int width)
{
    for(int i = 0; i < width; i++)
    {
        for(int j = 0; j < width; j++)
        {
            cout<<iMatrix[i][j]<<"\t";
        }
        cout<<endl;
    }
    cout<<endl;
}

int main()
{
    memset(iMatrix, 0, sizeof(iMatrix));

    cout << "螺旋数组" << endl;
    
    int x = 0; 
    int y = 0;
    
    cin >> x;
    cin >> y;
    
    int iBigger = 0;
    if(abs(x) >= abs(y))
        iBigger = abs(x);
    else
        iBigger = abs(y);

    int width = 2 * iBigger + 1;
    
    for(int w = 0; w <= iBigger; w++)
    {
        FillEdge(width, w);
    }

    Print(width);

    cout<<iMatrix[y + iBigger][x + iBigger];
}
相关阅读 更多 +
排行榜 更多 +
西安交大通

西安交大通

生活实用 下载
长江云通

长江云通

生活实用 下载
translatez

translatez

生活实用 下载