我传递一个矩阵作为输入(c ++),我想打印出矩阵外部的数字,即它的"空心方形元素".我知道怎么做,这就是if语句:if(i==0 || i==n || j==0 || j==n).我想打印矩阵的下一帧,因为这个if语句打印矩阵的外框.我想要打印所有下一帧.
我已经使用矩阵的外部,if(i==0 || i==n || j==0 || j==n)但正如我所说,它打印矩阵的第一帧,我想打印下一帧.
例如,给定矩阵
1 2 3 4
4 3 2 1
5 6 7 8
8 7 6 5
Run Code Online (Sandbox Code Playgroud)
它应该打印:
3 2
6 7
Run Code Online (Sandbox Code Playgroud)
所以它是"第二"框架,它是矩阵的内部.第一帧应该是:
1 2 3 4
4 1
5 8
8 7 6 5
Run Code Online (Sandbox Code Playgroud)
那么,我该如何打印下一帧呢?
假设您的矩阵的大小为n+1x n+1,我认为以下条件适用于任何大小的方阵:
if(((i==1 || i==n-1) && (j>0 && j<n)) || ((i>0 && i<n) && (j==1 || j==n-1)))
Run Code Online (Sandbox Code Playgroud)
通常,第k帧可以通过以下条件打印:
if(((i==k || i==n-k) && (j>=k && j<=n-k)) || ((i>=k && i<=n-k) && (j==k || j==n-k)))
Run Code Online (Sandbox Code Playgroud)
对于k = 0,该条件减少到第一个if(i==0||i==n||j==0||j==n).