史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   程式語言討論區 (http://forum.slime.com.tw/f76.html)
-   -   嚴格增函數 (http://forum.slime.com.tw/thread207490.html)

joebin 2007-06-07 08:41 PM

嚴格增函數
 
:on_47: 題目
我的code
語法:

#include<iostream>
using namespace std;
int d[500],c[500],l[500];
void out(int a){
  if(l[a]!=a)
    out(l[a]); //用遞迴從第一個開始輸出
  cout <<d[a]<<endl;
}
int main( int argc, char * argv[] )
{
  int i=1,j,k,p,t=0,a;
  while(cin >>d[i]!=NULL){  //任意輸入i個整數
      l[i]=i;
    c[i]=1;
    i++;
  }
  for(j=1;j<i;j++){
    p=0;
    for(k=1;k<j;k++)
      if(d[k]<d[j]&&p<c[k]){
        p=c[k];
        l[j]=k; //紀錄前一個位子
      }
    c[j]=p+1;
    if(c[j]>t){
      a=j;
      t=c[j];  //紀錄最大值
    }
  }
  cout <<t<<endl<<"-"<<endl;
  out(a);
  //system("pause"); <-此為devC++編譯程式要加
  return 0;
}

送去ACM測試結果出現"無窮迴圈",請問我的程式碼哪裡出錯??

mini 2007-06-08 12:24 PM

while 裡面賦值後 又加上 比對
看起來是沒問題
但不同的編譯器很可能會有差距
建議還是一步一步的作

可改成
while(cin >>d[i]){ //任意輸入整數
if(d[i]==0) break;
c[i]=i;
i++;
}

joebin 2007-06-08 07:02 PM

引用:

作者: mini (文章 1731686)
while 裡面賦值後 又加上 比對
看起來是沒問題
但不同的編譯器很可能會有差距
建議還是一步一步的作

可改成
while(cin >>d[i]){ //任意輸入整數
if(d[i]==0) break;
c[i]=i;
i++;
}

:on_10:

這個用法在各版是合理的,所以不是這個問題捏~"~(前陣子測驗過可用)
況且他任意輸入的整數也可包括0,mini你可能沒去看過題目唷!
是的話點我發文的"題目",會自動連結到提中文翻譯網站


所有時間均為台北時間。現在的時間是 08:10 AM

Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1