//经典矩阵问题是利用数字生成一个矩阵,而该矩阵刚好是一个正方形,该矩阵内的数字是有 //规律的排序而形成矩阵。比较常见有以下形式 //1. // 1 2 9 10 // 4 3 8 11 // 5 6 7 12 // 16 15 14 13 //2. // 1 2 6 7 // 3 5 8 13 // 4 9 12 14 // 10 11 15 16 //3. // 1 2 3 4 // 12 13 14 5 // 11 16 15 6 // 10 9 8 7 //4. // 7 6 5 16 // 8 1 4 15 // 9 2 3 14 // 10 11 12 13 #includeusing namespace std; const int N = 5;//可修改 int a[N][N]; void Print(int n) { for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) printf("%-2d ",a[i][j]); cout << endl; } cout << endl; } void Rectangle1() { int i = 0, j = 0; int lap = 1, m = 1, n; //cout<< "please input n行数"; //cin >> n; n = 4; a[i][j] = m++; lap++; while (lap <= n) { if (lap % 2 == 0) { for (j++; i < lap; i++) a[i][j] = m++; i--; for (j--; j >= 0; j--) a[i][j] = m++; j++; } else { for (i++; j < lap; j++) a[i][j] = m++; j--; for (i--; i >= 0; i--) a[i][j] = m++; i++; } lap++; } Print(n); } void Rectangle2() { int i = 0, j = 0; int s = 1, nNum = 1;//s标记升降方向,斜向上为升s=1,斜向下为降s=-1 int n = 4; while (1) { if (s == 1) { a[i][j] = nNum; if (i - 1 < 0) { if (j + 1 == n) i++; else j++; s = -1; } else if (j + 1 == n) { i++; s = -1; } else { i--; j++; } } else { a[i][j] = nNum; if (j - 1 < 0) { if (j + 1 == n) j++; else i++; s = 1; } else if (i + 1 == n) { j++; s = 1; } else { i++; j--; } } nNum++; if (nNum > n*n) break; } Print(n); } void Rectangle3() { int i = 0, j = 0; int n = 4; int x1=0, x2=n, y1=0, y2=n;//分别表示上下左右 int m = 1, s = 1;//s=1表示升序,s=-1表示降序 while (1) { if (s == 1) { for (j; j < y2; ++j) a[i][j] = m++; j--; i++; y2--; for (i; i < x2; ++i) a[i][j] = m++; i--; j--; x2--; s = -1; } else { for (j; j >=y1; --j) a[i][j] = m++; j++; i--; y1++; for (i; i>=x1+1; --i) a[i][j] = m++; i++; j++; x1++; s = 1; } if (m > n*n) break; } Print(n); } void Rectangle4() { int i = 0, j = 0; int n = 4; int m = n*n; int x1 = 0, y1 = 0, x2 = n, y2 = n; int s = 1; if (n % 2 == 0) { j = n - 1; y2 = n - 1; s = 1; } else { i = n - 1; y1 = 1; s = -1; } while (1) { if (s == 1) { for (i; i < x2; ++i) a[i][j] = m--; i--; j--; x2--; for (j; j >= y1; --j) a[i][j] = m--; j++; i--; y1++; s = -1; } else { for (i; i >=x1; --i) a[i][j] = m--; i++; j++; x1++; for (j; j 创新互联专注于潢川企业网站建设,自适应网站建设,电子商务商城网站建设。潢川网站建设公司,为潢川等地区提供建站服务。全流程按需求定制开发,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务 另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
分享文章:经典矩阵问题-创新互联
本文来源:http://cxhlcq.com/article/dhedos.html