//遍历斜边不必背,直接建构。建构依据:起始位置,i与j加减性,终止位置。
//所以总的思路:1 确定外循环;2.确定i与j增减性,从而确定基本式子(如i+j还是i-j);3.确定满足起始位置的式子。4.限制范围
include[HTML_REMOVED]
include[HTML_REMOVED]
using namespace std;
const int N = 100;
int a[N][N];
int main()
{
int n,m; cin >> n>>m;
for (int i = 0; i < n; i)
{
for (int j = 0; j < m; j)
cin >> a[i][j];
}
for (int j = 1; j < m; j)
{
for (int i = 0; i<n&&i < m - j; i)
{
cout << a[i][j + i] << ” “;
//i与j同时加,所以i+j;而每遍历完一条斜边j才++;所以j在外;i+j和i不能越界;起始位置刚好满足i+j
}cout << endl;}
for (int i = 0; i < n; i++)
for (int j = 0; j < m && j + i < n; j++)
cout << a[i + j][j] << " ";//i与j同时加,i在外,i+j满足起始位置。
cout << endl;
for (int j = m - 2; j >= 0; j--)
for (int i = 0; j - i >= 0&&i<n; i++)
cout << a[i][j - i]<<" ";//j-则i+,所以j-i;j-i刚好满足起始位置。
cout << endl;
for (int i = 0; i < n; i++)
for (int j = m - 1; j >= 0 && m-1+i-j<n; j--)
cout << a[i-j+m-1][j] << " ";//i+则j-,所以i-j;而i-j不满足起始位置,所以配凑一下,使得式子从起始位置开始。
return 0;