全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1915
推到 Plurk!
推到 Facebook!

如何取矩陣各行的最大值來比大小

答題得分者是:yulong375
hsiang730229
一般會員


發表:1
回覆:1
積分:0
註冊:2008-03-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-03-03 19:34:25 IP:140.126.xxx.xxx 訂閱
各位大大好: 我想將以下程式修改成:兩個矩陣Q與r的各行先取一個最大值後.再來比大小.我的定理為:如果Q[ j ][ k ]的每一行的最大值都大於等於r[ i ][ k ]的每一行的最大值 則有可能有解 請問該如何修改

[code cpp]

int i,j,k;
int CheckCount;

for(i=0;i for(k=0;k {
CheckCount=0;
for(j=0;j if(r[i][k]>Q[j][k])
CheckCount ;
if(CheckCount==QRow)
{ NoSolutionRdoBtn->Checked=true;
NoSolutionRdoBtn->Font->Color=clRed;
}
else
MaybeHasSolutionRdoBtn->Checked=true;
}
GroupBox2->Enabled=true;
[/code]
編輯記錄
taishyang 重新編輯於 2008-03-03 19:55:08, 註解 無‧
taishyang 重新編輯於 2008-03-03 19:55:32, 註解 無‧
taishyang 重新編輯於 2008-03-03 19:56:11, 註解 無‧
yulong375
一般會員


發表:2
回覆:22
積分:19
註冊:2007-03-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-03-04 17:12:13 IP:140.128.xxx.xxx 訂閱
把你的程式改成這樣看看

[code cpp]
#define max(a,b) ((a) > (b) ? (a) : (b))
#define min(a,b) ((a) < (b) ? (a) : (b))
//---------------------------------------------------------------
int CheckCount;
CheckCount=0;
for(int k=0;k{
int rRowmax=0,
for(int i=0;i rRowmax = max(rRowmax, r[i][k]);

int QRowmax=0;
for(int j=0;j QRowmax = max(QRowmax, Q[j][k]);

if(rRowmax > QRowmax)
CheckCount ;
}
if(CheckCount==rCol)
{
NoSolutionRdoBtn->Checked=true;
NoSolutionRdoBtn->Font->Color=clRed;
}
else
MaybeHasSolutionRdoBtn->Checked=true;

[/code]
------
我還是很新的新手,如果回答的太笨拙還請各位多多包含!!
編輯記錄
yulong375 重新編輯於 2008-03-04 17:18:50, 註解 無‧
yulong375 重新編輯於 2008-03-04 17:19:26, 註解 無‧
yulong375 重新編輯於 2008-03-04 17:20:51, 註解 無‧
hsiang730229
一般會員


發表:1
回覆:1
積分:0
註冊:2008-03-03

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-03-06 16:26:52 IP:140.126.xxx.xxx 訂閱
大大你好!小弟使用你所提供的程式修改後,可以執行但是答案不對!小弟檢查後發覺rRowmax = max(rRowmax, r[i][k])與QRowmax = max(QRowmax, Q[j][k])所傳回的值皆為0,小弟在想是否因為一開始令的rRowmax =0與QRowmax = 0部分應該是零矩陣而非0,由於小弟輸入的Q與r的值是由輸入決定而非固定 所以懇請大大幫忙!!
    yulong375
    一般會員


    發表:2
    回覆:22
    積分:19
    註冊:2007-03-15

    發送簡訊給我
    #4 引用回覆 回覆 發表時間:2008-03-07 11:39:40 IP:140.128.xxx.xxx 訂閱
    抱歉,我誤會你意思了。
    更改一下,我做了個範例:

    [code cpp]
    #define max(a,b) ((a) > (b) ? (a) : (b))
    #define min(a,b) ((a) < (b) ? (a) : (b))
    //=============================
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    int CheckCount;
    int rRowmax=0;
    int QRowmax=0;
    int r[4][3]={{1, 2, 3},{1, 2, 3},{1, 2, 3},{2, 3, 4}};
    int Q[3][3]={{1, 2, 3},{1, 2, 3},{1, 2, 3}};
    CheckCount=0;
    for(int k=0;k<3;k )
    {
    for(int i=0;i<4;i )
    rRowmax = max(rRowmax, r[i][k]);
    for(int j=0;j<3;j )
    QRowmax = max(QRowmax, Q[j][k]);
    if(rRowmax > QRowmax)
    CheckCount ;
    }
    if(CheckCount==3)
    Label1->Caption="1";
    else
    Label1->Caption="2";
    }
    [/code]
    執行結果=1。
    ------
    我還是很新的新手,如果回答的太笨拙還請各位多多包含!!
    系統時間:2024-04-24 7:42:03
    聯絡我們 | Delphi K.Top討論版
    本站聲明
    1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
    2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
    3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!