一個向量第一個元素的存儲地址是100
㈠ 有誰能給我今年的NOIP分區聯賽的題目
第八屆全國青少年信息學奧林匹克聯賽(NOIP2002)試題
(普及組PASCAL語言二小時完成)
全部試題答案均要求寫在答卷紙上,寫在試卷紙上一律無效
一.選擇一個正確答案代碼(A/B/C/D,填入每題的括弧內(每題1.5分,多選無分,共30分)
1)微型計算機的問世是由於( ) 的出現。
A) 中小規模集成電路 B) 晶體管電路 C) (超)大規模集成電路 D) 電子管電路
2)下列說法中正確的是( ) 。
A) 計算機體積越大,其功能就越強
B) CPU的主頻越高,其運行速度越快
C) 兩個顯示器屏幕大小相同,則它們的解析度必定相同
D)點陣列印機的針數越多,則能列印的漢字字體越多
3)Windows98中,通過查找命令查找文件時,若輸入F*.? , 則下列文件( ) 可以被查到。
A) F.BAS B) FABC.BAS C) F.C D) EF.
4)CPU處理數據的基本單位是字,一個字的字長( ) 。
A) 為8個二進制位 B) 為16個二進制位
C) 為32個二進制位 D) 與晶元的型號有關
5)資源管理器的目錄前圖標中增加"+"號,這個符號的意思是( ) 。
A) 該目錄下的子目錄已經展開 B) 該目錄下還有子目錄未展開
C) 該目錄下沒有子目錄 D) 該目錄為空目錄,
6)下列哪一種程序設計語言是解釋執行的( ) 。
A) Pascal B) GWBASIC C) C++ D) FORTRAN
7)啟動WORD的不正確方法是( ) 。
A) 單擊Office工具欄上的Word圖標
B) 單擊"開始"→"程序"→Word
C) 單擊"開始"→"運行",並輸入Word按回車
D) 雙擊桌面上的"Word快捷圖標"
8)多媒體計算機是指( ) 計算機。
A) 專供家庭使用的 B) 裝有CDROM的
C) 連接在網路上的高級 D) 具有處理文字、圖形、聲音、影像等信息的
9)在樹型目錄結構中,不允許兩個文件名相同主要是指( ) 。
A) 同一個磁碟的不同目錄下 B) 不同磁碟的同一個目錄下
C) 不同磁碟的不同目錄下、 D) 同一個磁碟的同一個目錄下
10)用畫筆(Paintbrush)繪制圖形並存儲在文件中,該圖形文件的文件名預設的後綴為( ) 。
A) .jpg B) .bmp C) .gif D).tiff
t11)E-ml地址中用戶名和郵件所在伺服器名之間的分隔符號是( ) 。
E A) # B) @ C) & D) $
12)(0.5)10=( ) 16.
A) 0.1 B) 0.75 C) 0.8 D) 0.25
13)IP v4地址是由( ) 位二進制數碼表示的。
A) 16 B) 32 c) 24 D) 8
14)算式(2047)10一(3FF)16+(2000)8的結果是( ) 。
A) (2048)10 B) (2049)10 C) (3746)8 D) (1AF7)16
15)下列敘述中,錯誤的是( )
A) Excel中編輯的表格可以在Word中使用
B) 用Word編輯的文本可以存成純文本文件
C) 用記事本(Notepa D) 編輯文本時可以插入圖片
D) 用畫筆(Paintbrush)繪圖時可以輸入文字
16)一個向量第一個元素的存儲地址是100,每個元素的長度是2,則第5個元素的地址是( )
A) 110 B) 108 C) 100 D) 109
17)在所有排序方法中,關鍵字比較的次數與記錄的初始排列次序無關的是( ) 。
A) 希爾排序 B) 起泡排序 C) 插入排序 D) 選擇排序
18)在計算機網路中,Modem的功能是( )
A) 將模擬信號轉換為數字信號 B) 將數字信號轉換為模擬信號
C) 實現模擬信號與數字信號的相互轉換 D) 實現將模擬信號的數字信號
19)設有一個含有13個元素的Hash表(O~12),Hash函數是:H(key)=key % 13,其中%是求余數運算。用線性探查法解決沖突,則對於序列(2、8、31、20、19、18、53、27),18應放在第幾號格中( ) 。
A) 5 B) 9 C) 4 D) 0
20)要使1…8號格子的訪問順序為:82、63、73、1、4,則下圖中的空格中應填人( ) 。
1 2 3 4 5 6 7 8
4 6 1 -1 7 3 2
A) 6 B) O C) 5 D) 3
二.問題求解:
1. 如下圖,有一個無窮大的的棧S,在棧的右邊排列著1,2,3,4,5共五個車廂。其中每個車廂可以向左行走,也可以進入棧S讓後面的車廂通過。現已知第一個到達出口的是3號車廂,請寫出所有可能的到達出口的車廂排列總數(不必給出每種排列)。
出口← ← 1 2 3 4 5
S↓
2.將N個紅球和M個黃球排成一行。例如:N=2,M=3可得到以下6種排法:
紅紅黃黃黃 紅黃紅黃黃 紅黃黃紅黃 黃紅紅黃黃 黃紅黃紅黃 黃黃黃紅紅
問題:當N=4,M=3時有多少種不同排法?(不用列出每種排法)
三.閱讀程序:
program exp1;
var i,j,k,n,,L0,L1,LK:Integer;
a :array [0..20] of integer;
begin
readln(n,k);
for i:=0 to n-1 do a[i]:=i+1;
a[n]:=a[n-1];L0:=n-1; Lk:=n-1;
for I:=1 to n-1 do
begin
L1:=L0-k; if (l1<0) then L1:=L1+n;
If (l1=Lk) then begin
A[L0]:=a[n]; Lk:=Lk-1; a[n]:=a[Lk]; l0:=lk
End;
Else
Begin
A[l0]:=a[l1];l0:=l1;
End;
End;
A[L0]:=a[n];
For I:=0 to n-1 do write(a[I]:40;
Writeln;
End.
輸入:10 4
輸出:
2)program exp2;
var n,jr,jw,jb:integer;
ch1:char;
ch:array[1..20]d char;
begin
readln(n);
for i:=1 to n do read(ch[i]):
jr:=1;jwz=n;jb:=n;:
while (jr<=jw)do
begin
if(ch[jw]='R')
then begin
ch1:=Ch[jr];Ch[jr]:=ch[jw];ch[jw]:=ch1:jr:=jr+13
end
else if ch[jw]='W'
then jw:=jw-1
else begin
ch1:=ch[jw];ch[jw]:=ch[jb];ch[jb]:=ch1;jw:=jw-1;jb:=jb-1;
end
end;
for i:=1 to n do write(ch[i]);
writeln;
end.
輸入:10
RBRBWWRBBR
輸出:
3)Pmgram exp3;
Var I,j,p,n,q,s:integer;
a :array[1..20]of integer;
begin
readln(p,n,q);j :=21;
while (n>0)do
begin
j:=j-1;a[j]:=n mod 10;n:=n div 10;
end;
s:=0;
for i:=j t0 20 do s:=s*p+a[i];
writeln(s);j :=21;
while (s>O)do
begin j:=j-1;a[j]:=s mod q;s:=s div q;end;
for i:=j to 20 do write(a[i]);readln;
end.
輸入:7 3051 8
輸出:
四.完善程序:
1.問題描述:將n個整數分成k組(k≤n,要求每組不能為空),顯然這k個部分均可得到一個各自的和s1,s2,……sk,定義整數P為:
P=(S1-S2)2+(S1一S3)2+……+(S1-Sk)2+(s2-s3)2+……+(Sk-1-Sk)2
問題求解:求出一種分法,使P為最小(若有多種方案僅記一種〉
程序說明:
數組:a[1],a[2],...A[N]存放原數
s[1],s[2],...,s[K]存放每個部分的和
b[1],b[2],...,b[N]窮舉用臨時空間
d[1],d[2],...,d[N]存放最佳方案
程序:
program exp4;
Var i,j,n,k : integer;
a :array [1..100] of integer;
b,d:array [0..100] of integer;
s :array[1..30] of integer;
begin
readln(n,k);
for I:=1 to n do read(a[I]);
for I:=0 to n do b[I]:=1;
cmin:=1000000;
while (b[0]=1) do
begin
for I:=1 to k do ①
for I:=1 to n do
②
sum:=0;
for I:=1 to k-1 do
for j:= ③
sum:=sum+(s[I]-s[j])*(s[I]-s[j]);
if ④ then
begin
cmin:=sum;
for I:=1 to n do d[I]:=b[I];
end;
j:=n;
while ⑤ do j:=j-1;
b[j]:=b[j]+1;
for I:=j+1 to n do ⑥
end;
writeln(cmin);
for I:=1 to n do write(d[I]:40);
writeln;
end.
2. 問題描述:工廠在每天的生產中,需要一定數量的零件,同時也可以知道每天生產一個零件的生產單價。在N天的生產中,當天生產的零件可以滿足當天的需要,若當天用不完,可以放到下一天去使用,但要收取每個零件的保管費,不同的天收取的費用也不相同。
問題求解:求得一個N天的生產計劃(即N天中每天應生產零件個數),使總的費用最少。
輸入:N(天數N<=29)
每天的需求量(N個整數)
每天生產零件的單價(N個整數)
每天保管零件的單價(N個整數)
輸出:每天的生產零件個數(N個整數)
例如:當N=3時,其需要量與費用如下:
第一天 第二天 第三天
需要量 25 15 30
生產單價 20 30 32
保管單價 5 l0 0
生產計劃的安排可以有許多方案,如下面的三種:
第一天 第二天 第三天 總的費用
25 15 30 25*2O+15*30+30*32=1910
40 0 30 40*20+15*5+30*32=1835
70 0 0 70*20+45*5+30*10=1925
程序說明:
b[n]:存放每天的需求量
c[n]:每天生產零件的單價
d[n]:每天保管零件的單價
e[n]:生產計劃
程序:
Program exp5;
Var
i,j,n,yu,j0,j1,s:integer;
b,c,d,e: array[0..30]of integer; begin
readln(n);
for i:=1 to n do readln(b[[i],c[I],d[i]];
fori:=1 to n do e[i]:=0;
① :=10000;c[n+2]:=0;b[n+1]:=0;jO:=1;
while (jO<=n)do
begin
yu:=c[j0]; j1:=jO; s:=b[j0];
while ② do
begin
③ j1:=j1+1;s:=s+b[j1];
end;
④ jO:=j1+1;
end;
for i:=1 to n do ⑤
readln;
end.
㈡ 急需數據結構C語言版(清華大學出版社)的期末考試試題及答案
《數據結構》期末考試試卷( A )
一、 選擇題(每小題2分,共24分)
1.計算機識別、存儲和加工處理的對象被統稱為( A )
A.數據 B.數據元素
C.數據結構 D.數據類型
2.棧和隊列都是( A )
A.限制存取位置的線性結構 B.順序存儲的線性結構
C.鏈式存儲的線性結構 D.限制存取位置的非線性結構
3.鏈棧與順序棧相比,比較明顯的優點是( D )
A.插入操作更加方便 B.刪除操作更加方便
C.不會出現下溢的情況 D.不會出現上溢的情況
4.採用兩類不同存儲結構的字元串可分別簡稱為( B )
A.主串和子串 B.順序串和鏈串
C.目標串和模式串 D.變數串和常量串
5. 一個向量第一個元素的存儲地址是100,每個元素的長度為2,則第5個元素的地址是:B
A. 110 B .108
C. 100 D. 120
6.串是一種特殊的線性表,其特殊性體現在:B
A.可以順序存儲 B .數據元素是一個字元
C. 可以鏈接存儲 D. 數據元素可以是多個字元
7.設高度為h的二叉樹上只有度為0和度為2的結點,則此類二叉樹中所包含的結點數至少為: C
A. 2h B .2h-1
C. 2h+1 D. h+1
軟體開發網
8.樹的基本遍歷策略可分為先根遍歷和後根遍歷;二叉樹的基本遍歷策略可分為先序遍歷、中序遍歷和後序遍歷。這里,我們把 由樹轉化得到的二叉樹叫做這棵樹對應的二叉樹。下列結論哪個正確? A
A. 樹的先根遍歷序列與其對應的二叉樹的先序遍歷序列相同
B .樹的後根遍歷序列與其對應的二叉樹的後序遍歷序列相同
C. 樹的先根遍歷序列與其對應的二叉樹的中序遍歷序列相同
D. 以上都不對
9.一個有n個頂點的無向圖最多有多少邊?C
A. n B .n(n-1)
C. n(n-1)/2 D. 2n
10.在一個圖中,所有頂點的度數之和等於所有邊數的多少倍?C
A. 1/2 B .1
C. 2 D. 4
11.當在二叉排序樹中插入一個新結點時,若樹中不存在與待插入結點的關鍵字相同的結點,且新結點的關鍵字小於根結點的關鍵字,則新結點將成為( A )
A.左子樹的葉子結點 B.左子樹的分支結點
C.右子樹的葉子結點 D.右子樹的分支結點
軟體開發網
12.對於哈希函數H(key)=key%13,被稱為同義詞的關鍵字是( D )
A.35和41 B.23和39
C.15和44 D.25和51
二、已知某棵二叉樹的前序遍歷結果為A,B,D,E,G,C,F,H,I,J,其中中序遍歷的結果為D,B,G,E,A,H,F,I,J,C。請畫出二叉的具體結構。(注意要寫出具體步驟)(10分)
原理見課本128頁
三、有圖如下,請寫出從頂點c0出發的深度優先及寬度優先遍歷的結果。(10分)
深度優先;C0-C1-C3-C4-C5-C2
寬度優先:C0-C1-C2-C3-C4-C5
四、有圖如下,按Kruskal演算法求出其最小生成樹。要求寫出完整的步驟。(10分)
原理見課本250頁
五、給定線性表(12,23,45,66,76,88,93,103,166),試寫出在其上進行二分查找關鍵字值12,93,166的過程。並寫出二分查找的演算法。(20分)
0 1 2 3 4 5 6 7 8
12 23 45 66 76 88 93 103 166
過程:
mid=(0+8)/2=4
high=3,low=0 mid=1
high=0,low=0 mid=0(找到12)
high=8,low=5,mid=6(找到93)
high=8,low=7,mid=7
high=8 low=8 mid=8
演算法:見課本84頁上
六、知單鏈表的結點結構為
Data next
下列演算法對帶頭結點的單鏈表L進行簡單選擇排序,使得L中的元素按值從小到大排列。
請在空缺處填入合適的內容,使其成為完整的演算法。 (可用文字說明該演算法的基本思想及執行的過程,10分)
void SelectSort(LinkedList L)
{
LinkedList p,q,min;
DataType rcd;
p= (1) ;
while(p!=NULL) {
min=p;
q=p->next;
while(q!=NULL){
if( (2) )min=q;
q=q->next;
}
if( (3) ){
rcd=p->data;
p->data=min->data;
min->data=rcd;
}
(4) ;
}
}
本題不會。嘿嘿。。。。
七、一個完整的演算法應該具有哪幾個基本性質?分別簡要說明每一性質的含意。(5分)
輸入:
四個基本性質:1.輸入:有零個或多個有外部提供的量作為演算法的輸入
2:輸出:演算法產生至少一個量作為輸出
3.:確定性:組成演算法的每條指令是清晰的,無歧異的。
4.:有限性:演算法中每條指令的執行次數是有限的,執行每條指令的時間也是有限的
八、何謂隊列的"假溢"現象?如何解決?(5分)
隊列的假溢現象是指數組實現的順序隊列中,隊尾指針已到達數組的下表上界產生上溢而隊頭指針之前還有若干 空間閑置的現象。解決的辦法之一是利用循環隊列技術使數組空間的首尾相連。
九、說明並比較文件的各種物理結構。(6分)
㈢ 向量作為表的存儲結構啥意思
指的是用一組稿羨地鍵孫拍址連凱余續的存儲單元一次存儲線性表的數據元素。由於線性表的所有數據元素均屬同一類型,所以每個元素在存儲器中佔用的空間大小相同。假設向量的第一個元素存放的地址用LOC(A1)表示,每個元素佔用的空間大小為L個位元組,則元素Ai的存放地址為:LOC(Ai)=LOC(A1)+LX(i-1)在高級語言環境中,通常利用數組來表示線性表的順序存儲結構。
㈣ 向量的存儲方法的是什麼
向量通常的存儲方法是順序存儲,每個元素在存儲中佔用的空間大小相同,若第一個元素存放的位置是LOC(k1), 每個元素佔用的元素大小為s,則元素ki的存放位置為:
LOC(ki)= LOC(k1)+s * (i-1)
㈤ 高中信息學聯賽經典題型(pascal)
第八屆全國青少年信息學奧林匹克聯賽(NOIP2002)初賽試題
(提高組 PASCAL語言 二小時完成)
審定:全國青少年信息學奧林匹克競賽科學委員會
主管:中國科協、教育部
主辦:中國計算機學會
承辦:江蘇省科協青少年科技中心
●●全部試題答案均要求寫在答卷紙上,寫在試卷紙上一律無效●●
一. 選擇一個正確答案代碼(A/B/C/D),填入每題的括弧內(每題1.5分,多選無分,共30分)
1. 微型計算機的問世是由於( )的出現。
A)中小規模集成電路 B)晶體管電路 C)(超)大規模集成電路 D)電子管電路
2. 中央處理器(CPU)能訪問的最大存儲器容量取決於( )。
A)地址匯流排 B)數據匯流排 C)控制匯流排 D)實際內存容量
3. 十進制書11/128可用二進制數碼序列表示為:( )。
A)1011/1000000 B)1011/100000000 C)0.001011 D)0.0001011
4. 算式(2047)10 -(3FF)16 +(2000)8的結果是( )。
A)(2048)10 B)(2049)10 C)(3746)8 D)(1AF7)16
5. 已知x =(0.1011010)2 ,則[ x / 2 ]補 =( )2 。
A)0.1011101 B)11110110 C)0.0101101 D)0.100110
6. IPv4地址是由( )位二進制數碼表示的。
A)16 B)32 C)24 D)8
7. 計算機病毒傳染的必要條件是:( )。
A)在內存中運行病毒程序 B)對磁碟進行讀寫操作
C)在內存中運行含有病毒的可執行的程序 D)復制文件
8. 在磁碟上建立子目錄有許多優點,下列描述中不屬於建立子目錄優點的是( )。
A)便於文件管理 B)解決根目錄中目錄項個數有限問題
C)加快文件查找速度 D)節省磁碟使用空間
9. 在使用E-mail前,需要對Outlook進行設置,其中ISP接收電子郵件的伺服器稱為( )伺服器。
A)POP3 B)SMTP C)DNS D)FTP
10.多媒體計算機是指( )計算機。
A)專供家庭使用的 B)裝有CD-ROM的
C)連接在網路上的高級 D)具有處理文字、圖形、聲音、影像等信息的
11.微型計算機中,( )的存取速度最快。
A)高速緩存 B)外存儲器 C)寄存器 D)內存儲器
12.資源管理器的目錄前圖標中增加「+」號,這個符號的意思是( )。
A)該目錄下的子目錄已經展開 B)該目錄下還有子目錄未展開
C)該目錄下沒有子目錄 D)該目錄為空目錄
13.在WORD文檔編輯中實現圖文混合排版時,關於文本框的下列敘述正確的是( )。
A)文本框中的圖形沒有辦法和文檔中輸入文字疊加在一起,只能在文檔的不同位置
B)文本框中的圖形不可以襯於文檔中輸入的文字的下方
C)通過文本框,可以實現圖形和文檔中輸入的文字的疊加,也可以實現文字環繞
D)將圖形放入文本框後,文檔中輸入的文字不能環繞圖形
14.一個向量第一個元素的存儲地址是100,每個元素的長度是2,則地5個元素的地址是( )。
A)110 B)108 C)100 D)109
15.已知A = 35H,A /\ 05H \/ A /\ 30H 的結果是:( )。
A)30H B)05H C)35H D)53H
16.設有一個含有13個元素的Hash表(0 ~ 12),Hash函數是:H(key)= key % 13,,其中%是求余數運算。用線性探查法解決沖突,則對於序列(2、8、31、20、19、18、53、27),18應放在第( )號格中。
A)5 B)9 C)4 D)0
17.按照二叉數的定義,具有3個結點的二叉樹有( )種。
A)3 B)4 C)5 D)6
18.在一個有向圖中,所有頂點的入度之和等於所有頂點的出度之和的( )倍。
A)1/2 B)1 C)2 D)4
19.要使1 ...8號格字的訪問順序為:8、2、6、5、7、3、1、4,則下圖中的空格中應填入( )。
1 2 3 4 5 6 7 8
4 6 1 -1 7 3 2
A)6 B)0 C)5 D)3
20.設棧S和隊列Q的初始狀態為空,元素e 1 ,e 2 ,e 3 ,e 4 ,e 5 ,e 6依次通過棧S,一個元素出棧後即進入隊列Q,若出隊的順序為e 2 ,e 4 ,e 3 ,e 6 ,e 5 ,e 1 ,則棧S的容量至少應該為( )。
A)2 B)3 C)4 D)5
二.問題求解:(6 + 8 = 14分)
1. 在書架上放有編號為1 ,2 ,...,n的n本書。現將n本書全部取下然後再放回去,當放回去時要求每本書都不能放在原來的位置上。例如:n = 3時:
原來位置為:1 2 3
放回去時只能為:3 1 2 或 2 3 1 這兩種
問題:求當n = 5時滿足以上條件的放法共有多少種?(不用列出每種放法)
2. 設有一棵k叉樹,其中只有度為0和k兩種結點,設n 0 ,n k ,分別表示度為0和度為k的結點個數,試求出n 0 和n k之間的關系(n 0 = 數學表達式,數學表達式僅含n k 、k和數字)。
三.閱讀程序,寫出正確的程序運行結果:(8 + 9 + 9 = 26分)
1. program Gxp1;
var i , n , jr , jw , jb : integer ;
ch1 : char ;
ch : array[1..20] of char ;
begin
readln(n);
for i:=1 to n do read(ch[i]);
jr:=1; jw:=n; jb:=n;
while (jr<=jw) do
begin
if (ch[jw]=』R』)
then begin
ch1:=ch[jr]; ch[jr]:=ch[jw]; ch[jw]:=ch1; jr:=jr+1;
end
else if ch[jw]=』W』
then jw:=jw-1;
else begin
ch1:=ch[jw]; ch[jw]:=ch[jb]; ch[jb]:=ch1; jw:=jw-1; jb:=jb-1;
end
end;
for i:=1 to n do write(ch[1]);
writeln;
end.
輸入:10
RBRBWWRBBR
輸出:
2. program Gxp2;
var i , j , s ,sp1 : integer ;
p : boolean ;
a : array[1..10] of integer ;
begin
sp1:=1; a[1]:=2; j:=2;
while sp1<10 do
begin
j:=j+1; p:=true;
for i:=2 to j-1 do
if (j mod i=0) then p:=false;
if p then begin
sp1:=sp1+1; a[sp1]:=j;
end;
end;
j:=2; p:=true;
while p do
begin
s:=1;
for i:=1 to j do s:=s*a[i];
s:=s+1;
for i:=2 to s-1 do
if s mod i=0 then p:=false;
j:=j+1;
end;
writeln(s); writeln;
end.
輸出:
3. Program Gxp2
Var d1 , d2 , X , Min : real ;
begin
Min:=10000; X:=3;
while X<15 do
begin
d1:=sqrt(9+(X-3)*(X-3)); d2:=sqrt(36+(15-X)*(15-X));
if(d1+d2)<Min then Min:=d1+d2;
X:=x+0.001;
end;
writeln(Min:10:2);
end.
輸出:
四.完善程序:(15 + 15 = 30分)
1. 問題描述:工廠在每天的生產中,需要一定數量的零件,同時也可以知道每天生產一個零件的生產單價。在N天的生產中,當天生產的零件可以滿足當天的需要,若當天用不完,可以放到下一天去使用,但要收取每個零件的保管費,不同的天收取的費用也不相同。
問題求解:求得一個N天的生產計劃(即N天中每天應生產零件個數),使總的費用最少。
輸入:N(天數 N<=29)
每天的需求量(N個整數)
每天生產零件的單價(N個整數)
每天保管零件的單價(N個整數)
輸出:每天的生產零件個數(N個整數)
例如:當N=3時,其需要量與費用如下:
第一天 第二天 第三天
需 要 量 25 15 30
生產單價 20 30 32
保管單價 5 10 0
生產計劃的安排可以有許多方案,如下面的三種:
第一天 第二天 第三天 總的費用
25 15 30 25*20+15*30+30*32=1910
40 0 30 40*20+15*5+30*32=1835
70 0 0 70*20+45*5+30*10=1925
程序說明:
b[n]:存放每天的需求量
c[n]:每天生產零件的單價
d[n]:每天保管零件的單價
e[n]:生產計劃
程序:
program exp5;
var
i,j,n,yu,j0,j1,s : integer ;
b,c,d,e : array[0..30] of integer ;
begin
readln(n);
for i:=1 to n do readln(b[i],c[i],d[i]);
for i:=1 to n do e[i]:=0;
①__________:=10000; c[n+2]=0; b[n+1]:=0 j0:=1;
while (j0<=n) do
begin
yu:=c[j0]; j1:=j0; s:=b[j0];
while ②__________ do
begin
③__________ j1:=j1+1; s:=s+b[j1];
end;
④__________ j0:=j1+1;
end;
for i:=1 to n do ⑤__________
readln;
end.
二.問題描述:有n種基本物質(n≤10),分別記為P1,P2,……,Pn,用n種基本物質構造物質,這些物品使用在k個不同地區(k≤20),每個地區對物品提出自己的要求,這些要求用一個n位的數表示:a1a2……a n,其中:
ai = 1表示所需物質中必須有第i種基本物質
= -1表示所需物質中必須不能有第i種基本物質
= 0無所謂
問題求解:當k個不同要求給出之後,給出一種方案,指出哪些物質被使用,哪些物質不被使用。
程序說明:數組 b[1],b[2]……b[n] 表示某種物質
a[1..k,1..n] 記錄k個地區對物品的要求,其中:
a[i,j]=1 表示第i個地區對第j種物品是需要的
a[i,j]=0 表示第i個地區對第j種物品是無所謂的
a[i,j]= -1 表示第i個地區對第j種物品是不需要的
程序:
program gxp2;
var
i,j,k,n : integer ;
p : boolean ;
b : array[0..20] of 0..1 ;
a : array[1..20,1..10] of integer ;
begin
readln(n,k);
for i:=1 to k do
begin
for j:=1 to n do read(a[i,j]);
readln;
end;
for i:=0 to n do b[i]:=0;
p:=true;
while ①__________ do
begin
j:=n;
while b[j]=1 do j:=j-1;
②__________
for i:=j+1 to n do b[i]:=0;
③__________
for i:=1 to k do
for j:=1 to n do
if (a[i,j]=1) and (b[j]=0) or ④__________
then p:=true;
end;
if ⑤__________
then writeln(『找不到!』)
else for i:=1 to n do
if (b[i]=1) then writeln(『物質』,i,』需要』)
else writeln(『物質』,i,』不需要』);
end.