一道关于C++二维数组的问题
2011-09-02 18:29
232 查看
输入一个值为n的数,输出这样一个n*n的序列。如何简单实现?
for example 打印一个序列:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
for example 打印一个序列:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
#include <vector> #include <iostream> using namespace std; int main() { int n; int i, j; int t; int flag = 1; vector< vector<int> > Matrix; cout << "输入n: \n"; cin >> n; Matrix.resize(n); for(i=0; i<n; i++) Matrix[i].resize(n); i = j = 0; for(i=0; i<n; i++) for(j=0; j<n; j++) Matrix[i][j] = -1; i = j = 0; t = 1; while(t <= n*n) { if(flag == 1) { if(Matrix[i][j] == -1) { Matrix[i][j] = t; j++; if(j+1 >= n || Matrix[i][j+1] != -1) flag = 2; } } else if(flag == 2) { if(Matrix[i][j] == -1) { Matrix[i][j] = t; i++; if(i+1 >= n || Matrix[i+1][j] != -1) flag = 3; } } else if(flag == 3) { if(Matrix[i][j] == -1) { Matrix[i][j] = t; j--; if(j-1 < 0 || Matrix[i][j-1] != -1) flag = 4; } } else if(flag == 4) { if(Matrix[i][j] == -1) { Matrix[i][j] = t; i--; if(i-1 < 0 || Matrix[i-1][j] != -1) flag = 1; } } ++t; } for(i=0; i<n; i++) { for(j=0; j<n; j++) { cout << Matrix[i][j]; if(j!=n-1) cout << ' '; else cout << '\n'; } } return 0; }
相关文章推荐
- 一道题目引发的关于c++命名域的问题--Avoid hiding inheried names
- 一道经典的C++题,关于分钱的问题,适合新手阅读(黑客X档案论坛题目) [c#]
- 一道经典的C++题,关于分钱的问题,适合新手阅读(黑客X档案论坛题目) [c#]
- 一道 C++ 关于野指针和作用域的问题
- 关于C/C++中二维数组、指针的引用等若干问题的总结
- 【C++】:C++的一道二维数组问题探究
- C++中关于二维数组作为函数参数传递的问题
- 关于C/C++的二维数组作为函数参数问题
- 一道经典的C++题,关于分钱的问题,适合新手阅读(黑客X档案论坛题目)
- 关于C++二维数组的返回问题
- 一道简单的C++笔试题,关于抽象shape类求图形周长的问题~
- C++中关于二维数组作为函数参数传递的问题
- 关于c++ 函数指针的问题
- c++中关于逻辑预算的优先级问题
- 关于c++多重继承下的函数调用注意的问题
- 这是我参考网上编写的一道数据结构关于二叉树求其子树是否指针或者线索,及其对应得值,但是我运行结果却是有点问题,希望高手帮指教下!
- 关于C#中 二维数组[,](MD) 和交错数组[][](SZ) 的原理性能问题
- 关于前置声明与C++中头文件相互包含的几点问题
- C++动态规划算法之数字金字塔【USACO TRAINING】:一道经典的数塔问题
- 对一道面试题的总结与扩展思考(关于一笔画问题的数学分析)(转载)