トップページ⇒prog
8コメント2KB

Cにて

■ このスレッドは過去ログ倉庫に格納されています
0001yanNGNG
Cのプログラムを教えてくださいませ。
お題は S[N][N]の2次元配列にて S[i][k]から見て斜めの
配列成分の合計を出したいのですが、わかりません。プロの人
さくっとおしえてください。できれば右上がり、右下がり両方。
0002>1NGNG
右上がり S[i+1][k+1]
右下がり S[i+1][k-1]
0003yanNGNG
レスありがとうございます。さらにfor文でどのようにまわせば卒なく
加算できるのでしょうか、S[i+1][k+1] なら右上だけですよね、左下
も同じようにやればいいんでしょうが、パラメーターをどのようにすれば
いいのか、、、

0004>2NGNG
逆では?
0005>2NGNG
逆では?
0006名無しさんNGNG
こんなのどう?

右下がり
for (n = 0; n < N; n++)
retval += a[(i + n) % N][(k + n) % N];

右あがり
for (n = 0; n < N; n++)
retval += a[(i + n) % N][(k - n + N) % N];

0007>1NGNG
もし質問が本気なら、アルゴリズム辞典類で行列式の項を調べれば良い
6さんの方法の改良として2回に分けて mod演算を無くす
データを45度回転してしまう
とか色々考えられますが
0008説明不足だよ>1NGNG
意味がわかんないよ
■i@`jを中心に斜めの4点って意味?
S[i+1][j]+S[i-1][j]+S[i][j+1]+S[i][j-1]

■それとも角の効き目方式?
retval=S[i][j]
for(ii=i+1@`jj=j+1;ii < N && jj< N;ii++@`jj++)retval+=S[ii][jj];
for(ii=i-1@`jj=j+1;ii >=0 && jj< N;ii--@`jj++)retval+=S[ii][jj];
for(ii=i+1@`jj=j-1;ii < N && jj>=0;ii++@`jj--)retval+=S[ii][jj];
for(ii=i-1@`jj=j-1;ii >=0 && jj>=0;ii--@`jj--)retval+=S[ii][jj];

■ このスレッドは過去ログ倉庫に格納されています