蛇形矩阵 pascal
来源:学生作业帮 编辑:神马作文网作业帮 分类:数学作业 时间:2024/11/16 01:17:06
蛇形矩阵 pascal
(本题所有的矩阵,就相当于数字填入一个正方形)
一个n行n列的蛇形矩阵可由如下方法生成:
从矩阵的左上角(第1行第1列)出发,初始时向右移动一格,然后向左下移动,直到碰到边界;如果下方是在范围内未出界的格子,则向下移动一格接着往右上移动,否则向右移动一格接着往右上移动,直到到达边界;接着,如果右边的格子在范围内,往右移动一格,否则向下移动一格,接着往左下直到边界;重复上述操作直至经过矩阵中所有格子.根据经过顺序,在格子中依次填入1,2,3,...,n*n,便构成了一个蛇形矩阵.
下图是一个n = 4 时的蛇形矩阵.
1 2 6 7
3 5 8 13
4 9 12 14
10 11 15 16
现给出矩阵大小n以及k,请你求出该矩阵中k值所在位置的行号和列号(行号列号都从1开始).
输入
第一行两个整数n和k,分别表示矩阵的行数和要求位置的数值k.
输出
输出一行两个整数,表示k在矩阵中的行号和列号,中间用一个空格分隔.
样例输入
4 5
样例输出
2 2
提示
【样例1解释】
4*4的矩阵如下:5位于第二行第二列.
1\x092\x096 7
3\x095\x098 13
4\x099\x0912 14
10\x0911\x0915 16
【数据范围】
对于70%的数据,1≤n≤100;
对于100%的数据,1≤n≤30,000,1≤k≤n*n.
不能用二维数组,
(本题所有的矩阵,就相当于数字填入一个正方形)
一个n行n列的蛇形矩阵可由如下方法生成:
从矩阵的左上角(第1行第1列)出发,初始时向右移动一格,然后向左下移动,直到碰到边界;如果下方是在范围内未出界的格子,则向下移动一格接着往右上移动,否则向右移动一格接着往右上移动,直到到达边界;接着,如果右边的格子在范围内,往右移动一格,否则向下移动一格,接着往左下直到边界;重复上述操作直至经过矩阵中所有格子.根据经过顺序,在格子中依次填入1,2,3,...,n*n,便构成了一个蛇形矩阵.
下图是一个n = 4 时的蛇形矩阵.
1 2 6 7
3 5 8 13
4 9 12 14
10 11 15 16
现给出矩阵大小n以及k,请你求出该矩阵中k值所在位置的行号和列号(行号列号都从1开始).
输入
第一行两个整数n和k,分别表示矩阵的行数和要求位置的数值k.
输出
输出一行两个整数,表示k在矩阵中的行号和列号,中间用一个空格分隔.
样例输入
4 5
样例输出
2 2
提示
【样例1解释】
4*4的矩阵如下:5位于第二行第二列.
1\x092\x096 7
3\x095\x098 13
4\x099\x0912 14
10\x0911\x0915 16
【数据范围】
对于70%的数据,1≤n≤100;
对于100%的数据,1≤n≤30,000,1≤k≤n*n.
不能用二维数组,
下面给个用数组求解的思路:
const
\x09max=25; m=5;
var
\x09a:array[1..max,1..max] of integer;
\x09i,j,k,t:integer;
begin
\x09t:=1;
\x09for k:=2 to max+1 do
\x09for i:=1 to k-1 do
\x09begin
\x09\x09j:=k-i;
\x09\x09if odd(k) then a[i,j]:=t else a[j,i]:=t;
\x09\x09t:=t+1;
\x09end;
\x09for k:=max+2 to 2*max do
\x09for i:=k-max to max do
\x09begin
\x09\x09j:=k-i;
\x09\x09if odd(k) then a[i,j]:=t else a[j,i]:=t;
\x09\x09t:=t+1;
\x09end;
\x09for i:=1 to max do
\x09begin
\x09\x09for j:=1 to max do write(a[i,j]:4);
\x09\x09writeln;
\x09end;
\x09
\x09for i:=1 to max do for j:=1 to max do if a[i,j]=m then begin
\x09\x09writeln(i:4,j:4);
\x09\x09break;
\x09end;
end.
const
\x09max=25; m=5;
var
\x09a:array[1..max,1..max] of integer;
\x09i,j,k,t:integer;
begin
\x09t:=1;
\x09for k:=2 to max+1 do
\x09for i:=1 to k-1 do
\x09begin
\x09\x09j:=k-i;
\x09\x09if odd(k) then a[i,j]:=t else a[j,i]:=t;
\x09\x09t:=t+1;
\x09end;
\x09for k:=max+2 to 2*max do
\x09for i:=k-max to max do
\x09begin
\x09\x09j:=k-i;
\x09\x09if odd(k) then a[i,j]:=t else a[j,i]:=t;
\x09\x09t:=t+1;
\x09end;
\x09for i:=1 to max do
\x09begin
\x09\x09for j:=1 to max do write(a[i,j]:4);
\x09\x09writeln;
\x09end;
\x09
\x09for i:=1 to max do for j:=1 to max do if a[i,j]=m then begin
\x09\x09writeln(i:4,j:4);
\x09\x09break;
\x09end;
end.
pascal语言蛇形矩阵程序 如下 :
pascal蛇形矩阵n*n的矩阵,n:1-20,样例输出:1 12 11 10 2 13 16 9 3
求unit6 蛇形矩阵 编程c++
给定整数N,请输出蛇形矩阵
给定整数n,请输出蛇形矩阵.输入:整数n 输出:蛇形矩阵
Pascal问题:矩阵乘法
以下蛇形矩阵用 "二维数组+循环" 打:
名称:蛇形矩阵问题 蛇形矩阵是1到m的自然数的某种特定排列.形似一条蛇沿对角线位置自下而上行进增长.
急求free pascal高手编程:蛇形填数,在n*n的格子中,按如下方式填数.
用pascal做这道题 是个回形矩阵题
Pascal 矩阵乘法的完整过程?
如何使用C# 语言实现螺旋加上蛇形的动态生成矩阵?n随机取数.