0
上記のものと同様に塗りつぶしたN * Nスパイラル行列の場合、R =行の数C =列の番号。5×5のスパイラル行列で[R、C]を見つけよう
私はまだ初心者ですので、あまり進まないでください。
私はスパイラル行列と混同していますが、これもうまくいくでしょうが、通常の行列用に設計されており、スパイラルなので最適な解を理解したいと思います。ありがとうございました。
#include<stdio.h>
/* Searches the element x in mat[][]. If the element is found,
then prints its position and returns true, otherwise prints
"not found" and returns false */
int search(int mat[4][4], int n, int x)
{
int i = 0, j = n-1; //set indexes for top right element
while (i < n && j >= 0)
{
if (mat[i][j] == x)
{
printf("\n Found at %d, %d", i, j);
return 1;
}
if (mat[i][j] > x)
j--;
else // if mat[i][j] < x
i++;
}
printf("\n Element not found");
return 0; // if (i==n || j== -1)
}
まず(
R
とC
使用1ベースのインデックスことに注意してください)、スパイラル行列の定義は何ですか? 第2に、このコードを使用して問題を解決しようとしており、正確に何が苦労していますか? – galfisherヒント:関数プロトタイプは 'int getnum(int n、int r、int c)'でなければなりません。関数は行列のコピーを必要としません。実際、これはほんの数学の問題です。キーボードを脇に置き、鉛筆と紙を拾います。 – user3386109
"** 5 * 5 **の行列で[R、C]を見つける" - 'int mat [4] [4]' - 何か気付いていますか? – Olaf