08/10/29 21:42:17
>>935-936
ありがとうございました
944:デフォルトの名無しさん
08/10/29 21:42:45
>>939
func(cell1)で次と前に新しいのを挿入する。
それぞれ先頭が帰ってくるが、こういうのでいいんだろうか。
struct cell *insert_next(struct cell *target)
{
struct cell *c1;
c1=(struct cell *) calloc(1, sizeof(struct cell));
c1->next=target->next;
target->next=c1;
return target;
}
struct cell *insert_prev(struct cell *target)
{
struct cell *c1;
c1=(struct cell *) calloc(1, sizeof(struct cell));
c1->next=target;
return c1;
}
945:デフォルトの名無しさん
08/10/29 21:46:33
>>775です。
さっぱりわからないので少しだけでもお願いします。
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
LU分解法を用いて、
URLリンク(kansai2channeler.hp.infoseek.co.jp)
のmatrix2.datファイルを参照して、
その係数行列Aの逆行行列X=A^-1を求めるプログラムを作成してください。
AX=I(Iは単位行列)となることをしめしてください、
URLリンク(kansai2channeler.hp.infoseek.co.jp)
に含まれるmat_auxに含まれる補助関数を使ってください。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: ([2008年11月6日まで]
946:デフォルトの名無しさん
08/10/29 21:47:57
#include<stdio.h>
#include<string.h>
#include<vector>
using namespace std;
unsigned int kaijyo(int k){unsigned int s=1; for(;k>0;k--)s*=k; return s;}
void retuprt(vector<unsigned char> &x){printf("( ");for(int n=0;n<x.size();n++)printf("%d ",x[n]);printf(")");}
unsigned int sanowa(vector<unsigned char> &x){unsigned int s=0,n; for(n=0;n<x.size()-1;n++)s+=x[n+1]>x[n]?x[n+1]-x[n]:x[n]-x[n+1];return s;}
main(){
unsigned int M,K;
unsigned int i,j,k;
vector<unsigned char> orgnum,num,jretu,maxretu;
for(M=2; M<20; M++) {
orgnum.resize(M);num.resize(M);jretu.resize(M);maxretu.resize(M);
for(i=0; i<M; i++) orgnum[i]=i+1;
int max=0;K=kaijyo(M);
for(k=0;k<K;k++){
memcpy(&num[0],&orgnum[0],M);
int N=k;
for(i=M;i>=1;i--) {
int n=N % i; jretu[i-1]=num[n];
for(j=n;j<i-1;j++) num[j]=num[j+1];
N/=i;}
i=sanowa(jretu);
if(max<i){max=i;memcpy(&maxretu[0],&jretu[0],M);}
}
printf("\nM=%d max=%d ",M,max); retuprt(maxretu);
}}
947:デフォルトの名無しさん
08/10/29 21:49:43
>>943
>>935は間違えているので、このように変更するように
x[n+1]>x[n]?x[n+1]-x[n]:x[n]-x[n+1];
948:775 ◆00BY157eo6
08/10/29 22:06:50
>>775です。
さっぱりわからないので少しだけでもお願いします。
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
LU分解法を用いて、
URLリンク(kansai2channeler.hp.infoseek.co.jp)
のmatrix2.datファイルを参照して、
その係数行列Aの逆行行列X=A^-1を求めるプログラムを作成してください。
AX=I(Iは単位行列)となることをしめしてください、
URLリンク(kansai2channeler.hp.infoseek.co.jp)
に含まれるmat_auxに含まれる補助関数を使ってください。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: ([2008年11月6日まで]
トリップつけました。
949:デフォルトの名無しさん
08/10/29 22:08:19
>>929
ありがとうございました
950:デフォルトの名無しさん
08/10/29 22:09:28
>>948
まずはテキストでうp
951:デフォルトの名無しさん
08/10/29 22:10:10
>>944
ありがとう。そのinsert_nextとprevとfunc(cell1)を>>939のどこに入れたらいいんでしょうか?
952:775 ◆00BY157eo6
08/10/29 22:17:02
>>950
テキストでファイル内容をうpしました。
ただ、できれば直接ファイルを参照して欲しいのですが…
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
LU分解法を用いて、
URLリンク(kansai2channeler.hp.infoseek.co.jp)
のmatrix2.datファイル(内容は)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
を参照して、
その係数行列Aの逆行行列X=A^-1を求めるプログラムを作成してください。
AX=I(Iは単位行列)となることをしめしてください、
URLリンク(kansai2channeler.hp.infoseek.co.jp)
に含まれるmat_aux(内容は)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
に含まれる補助関数を使ってください。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: ([2008年11月6日まで]
953:デフォルトの名無しさん
08/10/29 22:34:57
>>952
もう一度行列を復習してから書き込んでくれ
URLリンク(kansai2channeler.hp.infoseek.co.jp)
の行列って正方行列じゃないだろ
954:775 ◆00BY157eo6
08/10/29 22:42:52
>>953
あ、そうですね…
すいませんでした
一度ひっこみます
955:775 ◆00BY157eo6
08/10/29 22:50:53
修正しました。
[1] 授業単元:Cプログラミング
[2] 問題文(含コード&リンク):
LU分解法を用いて、
URLリンク(kansai2channeler.hp.infoseek.co.jp)
のmatrix2.datファイル(内容は下のtxtにまとめました)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
を参照して、
その係数行列Aの逆行行列X=A^-1を求めるプログラムを作成してください。
AX=I(Iは単位行列)となることをしめしてください、
URLリンク(kansai2channeler.hp.infoseek.co.jp)
に含まれるmat_aux(内容は)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
に含まれる補助関数を使ってください。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: ([2008年11月6日まで]
956:デフォルトの名無しさん
08/10/30 00:08:44
>>930
面白い問題なので俺もやってみた。コマンドライン引数で要素数指定。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
N=10 Max=49( 1152件) time 0:00.62
N=11 Max=59(11520件) time 0:06.03
N=12 Max=71(28800件) time 1:13.19
N=13 おわらねぇ……てか落ちた!
CPU Q6600 2.4GHz
OS Win Vista Ulti 32bit
957:デフォルトの名無しさん
08/10/30 00:11:19
なんか atexit する場所がへんだった。
958:デフォルトの名無しさん
08/10/30 00:40:43
N=2n+1のときの解はたぶん、
n+2, n, 2n+1, n-1, 2n, n-2, 2n-1, n-3,…,n+3, 1, n+1
だな。
N=2nのときも似たようなもん。証明は知らない。
959:デフォルトの名無しさん
08/10/30 00:44:30
N=2n+3とすると
n+3, n+1, N, n, N-1, n-1, N-2, n-2,…,n+4, 1, n+2
となり簡明か
960:デフォルトの名無しさん
08/10/30 01:01:09
N=2nのときmaxは、2*n*n-1
N=2n+1のときmaxは、2*n*n+2n-1
だな。証明は知らない。
961:デフォルトの名無しさん
08/10/30 01:36:04
>>930
面白い問題なのでオレも考えてみた。
で、解くためのアルゴリズムを見つけた。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
是非とも等角フォントで。
差の表を用いて考えれば
全部の数列の差を試さなくてすむし、一発で出来る
962:930
08/10/30 01:44:42
>>961
絵はどうでもいいからCで書けよカス
963:デフォルトの名無しさん
08/10/30 01:56:47
>>962
偽者だというのは分かるが、お前がキモイ・・・