




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、作業(yè)(10)1249Problem A: Sequence Problem (IV) : Function Practice (Append Code)Time Limit: 1 Sec Memory Limit: 4 MBSubmit: 3398 Solved: 1710SubmitStatusWeb BoardDescription整數(shù)序列是一串按特定順序排列的整數(shù),整數(shù)序列的長度是序列中整數(shù)的個數(shù),不可定義長度為負(fù)數(shù)的整數(shù)序列。兩整數(shù)序列A、B的和定義為一個新的整數(shù)序列C,序列C的長度是A、B兩者中較長的一個,序列C的每個位置上的整數(shù)都是A、B
2、對應(yīng)位置之和。若序列A、B不等長,不妨假設(shè)A比B整數(shù)多,那么序列C中多出B的那部分整數(shù)視作A的對應(yīng)位置上的整數(shù)與0相加。你的任務(wù)是計(jì)算符合某些要求的整數(shù)序列的和,這些序列中的整數(shù)都是小于1000的非負(fù)整數(shù)。-編寫以下函數(shù),使append.c中的main()函數(shù)能正確運(yùn)行:原型:int max(int a, int b);功能:返回a和b中較大的一個int值。原型:int init_seq(int seq, int size);功能:把int數(shù)組seq中的前size個元素初始化為0。原型:int get_seq(int seq);功能:按輸入格式的要求,讀取size個元素存放在seq,返回讀到的
3、元素個數(shù)。原型:int put_seq(int seq, int size);功能:按輸出格式的要求,把seq中的前size個元素輸出。原型:int add_seq(int sum_seq, int add_seq, int size);功能:把sum_seq和add_seq中的前size個元素相加,結(jié)果存儲sum_seq中。Input輸入的第一行為一個整數(shù)M(M>0),后面有M行輸入。每行第一個整數(shù)為N(N<=1000),后接一個長度為N的整數(shù)序列。Output對輸入的整數(shù)序列兩兩相加:第1行和第2行相加、第2行和第3行相加按順序輸出結(jié)果:每行輸出一個整數(shù)序列,每兩個整數(shù)之間用一
4、個空格分隔。若最后序列不足兩個,則視作補(bǔ)一個長度為0的整數(shù)序列相加。值得注意的是一個長度為0的整數(shù)序列也應(yīng)該有輸出,即使沒有整數(shù)輸出,也應(yīng)該占有一行,因?yàn)椤懊啃休敵鲆粋€整數(shù)序列”。Sample Input33 1 2 35 10 15 20 30 504 100 200 300 400Sample Output11 17 23 30 50110 215 320 430 50100 200 300 400HINTappend.c中的main()函數(shù)簡述:1. 定義兩個數(shù)組odd_seq和even_seq,分別存儲奇數(shù)行輸入的序列和偶數(shù)行輸入序列,odd_size和even_size是輸入的序列元
5、素個數(shù)。2. 輸入總行數(shù)m;3. 初始化odd_seq的全部元素,輸入第一行序列,存入odd_seq,元素個數(shù)存入odd_size;4. 從第2行至第m行重復(fù)以下步驟: 4.1 要輸入的是偶數(shù)行:even_seq全體清0,讀even_seq,把even_seq加到odd_seq上,輸出odd_seq; 4.2 要輸入的是奇數(shù)行時與偶數(shù)行操作的變量相反,步驟一致;5. 輸出最后一行。Append Codeappend.c, #include <stdio.h> #define MAX_SIZE 1
6、0000 int max(int a, int b) if(a<b) return b; else return a; int init_seq(int seq, int size) int i; for(i=0;i<size;i+)
7、; seqi=0; int get_seq(int seq) int cnt=0,shit; scanf("%d",&shit); while (cnt<shit) s
8、canf("%d",&seqcnt+); return shit; int put_seq(int seq, int size) int i; for (i=0;i<size;i+)
9、160;printf("%d",seqi); if (i!=size-1) putchar(' '); else putchar('n');
10、; if (size=0) putchar('n'); int add_seq(int sum_seq, int add_seq, int size) int i; for (i=0;i<size;i+)
11、0; sum_seqi+=add_seqi; int main() int odd_seqMAX_SIZE, odd_size; int even_seqMAX_SIZE, even_size; int m, i, put_size;
12、160; scanf("%d", &m); init_seq(odd_seq, MAX_SIZE); odd_size = get_seq(odd_seq); for(i = 2; i <= m; i+) if(i % 2 = 0)
13、0; init_seq(even_seq, MAX_SIZE); even_size = get_seq(even_seq);
14、160; put_size = max(odd_size, even_size); add_seq(odd_seq, even_seq, put_size); put_seq(odd_seq, put_size); &
15、#160; else init_seq(odd_seq, MAX_SIZE); odd_size
16、 = get_seq(odd_seq); put_size = max(odd_size, even_size); add_seq(even_seq, odd_seq, put_size);
17、 put_seq(even_seq, put_size); if(m % 2 = 0) put_seq(even_seq, even_size); else
18、; put_seq(odd_seq, odd_size); return 0; 1053Problem B: Matrix Problem : Array PracticeTime Limit: 1 Sec Memory Limit: 4 MBSubmit: 7795 Solved: 2678SubmitStatusWeb BoardDescription求一個m×n階矩陣A的轉(zhuǎn)置矩陣AT。矩陣A的每個元素都在int類型的范圍之內(nèi)。Input輸入的第一行為一個整數(shù)M(M>0),
19、后面有M組輸入數(shù)據(jù)。每組數(shù)據(jù)以兩個正整數(shù)m和n開始,滿足0<m,n<=100,接下來為一個m行n列的矩陣A。Output輸出為多組,每組輸出A的轉(zhuǎn)置矩陣AT。矩陣的輸出為:每行兩個元素之間用一個空格分開,每行最后一個元素之后為一個換行,在下一行開始輸出矩陣的下一行。每兩組輸出之間用一個空行分隔開。Sample Input13 31 2 34 5 67 8 9Sample Output1 4 72 5 83 6 9HINT二維數(shù)組存儲矩陣。#include <stdio.h> #include <stdlib.h> int main()
20、; int arr1102102,num, n, m, k, i, j; scanf("%d", &num); for(k = 0; k < num; k+) scanf("%d%d", &n, &m);
21、 for(i = 0; i < n; i+) for(j = 0; j < m; j+) scanf("%d",&arr1ji);
22、; for(i = 0; i < m; i+) for(j = 0; j < n-1; j+) printf("
23、;%d ",arr1ij); printf("%d",arr1ij); printf("n");
24、60; printf("n"); return 0; 1054Problem C: Matrix Problem (II) : Array PracticeTime Limit: 1 Sec Memory Limit: 4 MBSubmit: 5651 Solved: 2246SubmitStatusWeb BoardDescription求兩個矩陣A、B的和。根據(jù)矩陣加法的定義,只有同階的矩陣才能相加。可以確保
25、所有運(yùn)算結(jié)果都在int類型的范圍之內(nèi)。Input輸入數(shù)據(jù)為多個矩陣,每個矩陣以兩個正整數(shù)m和n開始,滿足0<m,n<=100,接下來為一個m行n列的矩陣A。當(dāng)輸入的m和n均為0時,表示輸入數(shù)據(jù)結(jié)束Output對輸入的矩陣兩兩相加:第1個和第2個相加、第3個和第4個相加按順序輸出矩陣相加的結(jié)果:每行兩個元素之間用一個空格分開,每行最后一個元素之后為一個換行,在下一行開始輸出矩陣的下一行。若輸入的矩陣不為偶數(shù)個,最后剩余的矩陣不產(chǎn)生任何輸出。不滿足矩陣加法定義的數(shù)據(jù)輸出“Not satisfied the definition of matrix addition!”每兩組輸出之間用一
26、個空行分隔開。Sample Input3 31 2 34 5 67 8 93 39 8 76 5 43 2 13 31 1 11 1 11 1 12 22 22 21 100 0Sample Output10 10 1010 10 1010 10 10Not satisfied the definition of matrix addition!HINT矩陣的加法就是對應(yīng)位置上的元素相加。#include<stdio.h> #include<string.h> #include<stdlib.h> int main()
27、160; int arr1105105,arr2105105; int x,y; while(scanf("%d%d",&x,&y)!=EOF&&x!=0&&y!=0) int i
28、,j,m, n; for(i=0;i<x;i+) for(j=0;j<y;j+) scanf("%d",&arr1ij); scanf(&q
29、uot;%d%d",&m,&n); for(i=0;i<m;i+) for(j=0;j<n;j+) scanf("%d",&arr2ij);
30、0; if(m=0&&n=0) break; else if(m=x&&n=y) for(i=0;i<x;i+) &
31、#160; for(j=0;j<y;j+) if(!j) printf("%d",arr1ij+arr2ij);
32、160; else printf(" %d",arr1ij+arr2ij); printf("n");
33、; printf("n"); else printf("Not satisfied the definition of matrix addition!nn"); 1055Problem D: Matrix Problem (III) : Array PracticeTime Limit: 1 Sec&
34、#160; Memory Limit: 4 MBSubmit: 5100 Solved: 1617SubmitStatusWeb BoardDescription求兩個矩陣A、B的乘積C=AB。根據(jù)矩陣乘法的定義,只有A的列數(shù)和B的行數(shù)相同才能相乘。可以確保所有運(yùn)算結(jié)果都在int類型的范圍之內(nèi)。Input輸入數(shù)據(jù)為多個矩陣(最少2個),每個矩陣以兩個正整數(shù)m和n開始,滿足0<m,n<=100,接下來為一個m行n列的矩陣A。當(dāng)輸入的m和n均為0時,表示輸入數(shù)據(jù)結(jié)束。Output對輸入的矩陣兩兩相乘:第1個和第2個相乘、第1個和第2個相乘的結(jié)果和第3個相
35、乘按順序輸出矩陣相乘的結(jié)果:每行兩個元素之間用一個空格分開,每行最后一個元素之后為一個換行,在下一行開始輸出矩陣的下一行。若前k個矩陣相乘的結(jié)果和第k+1個矩陣無法相乘(即不滿足矩陣乘法定義),則輸出“Not satisfied the definition of matrix multiplication!”。然后用第k+1個矩陣去和第k+2個矩陣相乘。最后一個矩陣只做乘數(shù)。每兩組輸出之間用一個空行分隔開。Sample Input2 31 1 11 1 13 31 2 34 5 67 8 93 10000 0Sample Output12 15 1812 15 1800HINT矩陣的乘法就是
36、一行乘以一列加起來做一個元素。#include <stdio.h> #include <string.h> int main() int i, j, k, l = 1, m, n, x , y, a101101, b101101, c101101; while(scanf("%d%d", &m, &n) != EOF)
37、 if(m = 0 && n = 0) break; else if(l % 2 = 1) x = m;
38、; y = n; for(i = 0; i < m; i +) for(j = 0; j < n; j +)
39、 scanf("%d", &aij); else if(l%2 = 0)
40、160;for(i = 0; i < m; i +) for(j = 0; j < n; j +) scanf("%d", &bij); &
41、#160; if(y = m) /memset(c,0,sizeof(c);
42、60; for(i = 0; i < x; i +) for(j = 0; j < n; j +)
43、; cij = 0; &
44、#160; for(k = 0; k < y; k +) cij += aik*bkj; &
45、#160; for(i = 0; i < x; i +)
46、0; for(j = 0; j < n; j +) &
47、#160; if(j = 0) printf("%d", cij);
48、60; else printf(" %d", cij);
49、0; aij = cij; cij = 0;
50、160; /memset(c,0,sizeof(c); printf("n");
51、0; printf("n"); y = n;
52、0; l +; else
53、; printf("Not satisfied the definition of matrix multiplication!n"); printf("n"); &
54、#160; for(i = 0; i < m; i +) for(j = 0; j < n; j +)
55、60; aij = bij;
56、60; bij = 0;
57、; /memset(b,0,sizeof(b); l +; &
58、#160; x = m; y = n; l +;
59、; 1298Problem E: 遞歸的輾轉(zhuǎn)相除法Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 3219 Solved: 1821SubmitStatusWeb BoardDescription輾轉(zhuǎn)相除法,也稱歐幾里得算法,是求最大公約數(shù)的算法。輾轉(zhuǎn)相除法首次出現(xiàn)于歐幾里得的幾何原本(第VII卷,命題i和ii)中,而在中國則可以追溯至東漢出現(xiàn)的九章算術(shù)。兩個整數(shù)的最大公約數(shù)(亦稱公約數(shù))是能夠同時整除它們的最大的正整數(shù)。輾轉(zhuǎn)相除法基于如下原理:兩個整數(shù)的最大公約數(shù)等于其中較小的數(shù)和兩數(shù)的差的最
60、大公約數(shù)。根據(jù)這個原理,不難得出用輾轉(zhuǎn)相除法求最大公約數(shù)的遞歸定義:下面,給出兩個正整數(shù)A和B,求他們的最大公約數(shù)(gcd(A,B))和最小公倍數(shù)(lcm(A,B))。-Invalid Word(禁用單詞)錯誤:在解決這個題目時,某些關(guān)鍵詞是不允許被使用的。如果提交的程序中包含了下列的關(guān)鍵詞之一,就會產(chǎn)生這個錯誤。被禁用的關(guān)鍵字:循環(huán)語句for、while,甚至包括分支語句的switch、case、goto、break。被禁用的頭文件:math.h、stdlib.h。Input輸入為兩個整數(shù)A和B,滿足0<A,B<215。Output輸出兩數(shù),分別為gcd(A,B)和lcm(A,B
61、),用一個空格分隔。Sample Input24 36Sample Output12 72#include<stdio.h> int gcd(int a,int b) int min, x; if(a = b) return b; else
62、; if(a < b) min = a; x = b - a; &
63、#160; else if(a > b) min = b; x = a - b;
64、60; if(min = x) return min; return gcd(min,x);
65、 int lcm(int a,int b) return (a * b) / gcd(a, b); int main() int a, b; scanf("%d %d", &a, &b); printf("%d %d", gcd(a,b), lcm(a,b);
66、160;return 0; 1245Problem F: The Hanoi TowerTime Limit: 1 Sec Memory Limit: 16 MBSubmit: 2343 Solved: 1431SubmitStatusWeb BoardDescription“Hanoi Tower”問題的背景和搬移規(guī)則大家是否都很熟悉了?為了突出重點(diǎn),我把問題描述放在下面的HINT部分,不了解的同學(xué)可以參考。首先我們Hanoi塔上的盤子按從上到下編號,假設(shè)Hanoi塔上有n個盤子,那么最小的那個盤子就是1號盤子,然后是2號、3號最大的盤子是n號。H
67、anoi塔的3根針我們也進(jìn)行編號,最左邊的是1號,中間的是2號,最右邊的是3號。如果我們想把n=2個盤子從1號針搬到2號針,那么3號針作為暫存使用。整個搬移過程是這樣的:1號盤子:從1號針搬到3號針2號盤子:從1號針搬到2號針1號盤子:從3號針搬到2號針你的任務(wù)是編個程序把上面的搬移過程輸出來,程序需要輸入盤子的個數(shù)n,并且這n個盤子一開始在哪根針,要搬到哪根針都是從輸入得到的。Input輸入為多行,至EOF結(jié)束。每行輸入四個整數(shù),第一個整數(shù)為盤子數(shù)n(1<=n<=10),后面的三個整數(shù)是三根針的編號,它們排列的順序是有不同含義的:第二個整數(shù)是n個盤子一開始的位置,第四個整數(shù)是盤子
68、最終要放置的位置,第三個整數(shù)是搬移過程中用來暫存盤子的。如:輸入“1 2 3 1”表示只有一個盤子,從第2根針搬到第1跟針上。Output每一行輸入都對應(yīng)一個搬移過程,首先輸出一個“case i”,表示對應(yīng)的第i個輸入。然后再它后面輸出搬移的步驟。如:輸入“1 2 3 1”表示只有一個盤子,從第2根針搬到第1跟針上。那么它的搬移步驟只有一步:把1號盤子從第2跟針搬到第1跟針,即輸出:plate 1 : from 2 to 1Sample Input1 2 3 12 2 3 13 1 2 34 3 1 2Sample Outputcase 1 : plate 1 : from 2 to 1cas
69、e 2 : plate 1 : from 2 to 3 plate 2 : from 2 to 1 plate 1 : from 3 to 1case 3 : plate 1 : from 1 to 3 plate 2 : from 1 to 2 plate 1 : from 3 to 2 plate 3 : from 1 to 3 plate 1 : from 2 to 1 plate 2 : from 2 to 3 plate 1 : from 1 to 3case 4 : plate 1 : from 3 to 1 plate 2 : from 3 to 2 plate 1 : from
70、 1 to 2 plate 3 : from 3 to 1 plate 1 : from 2 to 3 plate 2 : from 2 to 1 plate 1 : from 3 to 1 plate 4 : from 3 to 2 plate 1 : from 1 to 2 plate 2 : from 1 to 3 plate 1 : from 2 to 3 plate 3 : from 1 to 2 plate 1 : from 3 to 1 plate 2 : from 3 to 2 plate 1 : from 1 to 2HINT 梵塔問題出自古印度的數(shù)學(xué)故事。歷史學(xué)家
71、鮑爾在數(shù)學(xué)拾零一書中是這樣講述這段故事的:在世界中心貝拿勒斯的圣廟里,安放著一個黃銅板,板上插著三根寶石針。每根針高約20英寸。梵天在創(chuàng)造世界的時候,在其中一根針上從下到上放了由大到小的64塊金片,這就是梵塔(見圖1.1)。不論白天黑夜,都有一個值班的僧侶按照梵天不渝的法則,把這些金片在三根針上移來移去:一次只能移一片,金片只能放在三根針上,并且要求在每根針上,都不能出現(xiàn)大片在上小片在下的情況。當(dāng)所有64片都從梵天創(chuàng)造世界時所放的那根針移到另外一根針上時,世界就將在一聲霹靂中消滅,梵塔、廟宇和眾生都將同歸于盡。這個故事聽起來很可怕。只要那些值班的僧侶按照“梵天不渝”的法則把64塊金片從一根針移
72、到另一根針上,世界末日就會到來。那么,僧侶們完成梵塔的移動工作需要多少時間呢?梵塔中共有64塊金片,要把它們從一根針按“梵天不渝”的法則移到另一根針,即使僧侶們一次錯誤也不犯,也需移動264-1 = 18,446,744,073,709,511,615次。如果移動一塊金片需要一秒鐘,也要近58萬億年才能完成,根據(jù)宇宙進(jìn)化論的推算,整個太陽系的壽命大約200億年。可見,我們大可不必為梵塔故事的寓言而恐慌。#include <stdio.h> int move(int n, int a, int b, int c) if(n = 1 )
73、 printf(" plate 1 : from %d to %dn", a, c); return 0; else move(n - 1, a, c, b);
74、; printf(" plate %d : from %d to %dn", n, a, c); move(n - 1, b, a, c); /*int move(int n,int a,int c) printf(" plate %d : from %d to %dn",n,a,c); int move1(int n,int a,int b,int c)
75、; if(n=1) move(1,a,c); else move1(n-1,a,c,b); move(n,a,c); move1(n-1,b,a,c); */
76、0; int main() int case1 = 1, plate, start, target, pass; while(scanf("%d%d%d%d", &plate, &start, &pass, &target) != EOF) printf("case %d
77、:n", case1); move(plate, start, pass, target); printf("n"); case1 +; 1208Problem G: 編寫函數(shù):Swap (II) (Append Code)Time
78、 Limit: 1 Sec Memory Limit: 2 MBSubmit: 1918 Solved: 1244SubmitStatusWeb BoardDescription編寫用來交換兩段連續(xù)存儲空間的函數(shù),使得“Append Code”中的main()函數(shù)能正確運(yùn)行。-編寫一個函數(shù)swap_any()用來進(jìn)行交換:原型:int swap_any(void *s, void *t, unsigned n);功能:前兩個參數(shù)(指針s和指針t)分別標(biāo)記出兩處連續(xù)存儲區(qū)域的起始地址,交換自s和t中地址開始的連續(xù)n個字節(jié)。函數(shù)的調(diào)用格式見“Append
79、 Code”。-Invalid Word(禁用單詞)錯誤:在解決這個題目時,某些關(guān)鍵詞是不允許被使用的。如果提交的程序中包含了下列的關(guān)鍵詞之一,就會產(chǎn)生這個錯誤。宏定義define被禁用。Input 測試數(shù)據(jù)分4四組,每組占2行,為兩個相互交換的同類型數(shù)據(jù)。這四組測試數(shù)據(jù)分別為:2個不超過100個字符的串、2個單字符、2個整數(shù)和2個浮點(diǎn)數(shù)。Output 輸出為4行,將2個同類型的數(shù)據(jù)交換后輸出,用一個空格分開。Sample Input35353535Sample Output5 35 35 35 3HINT 這里可能用到庫函數(shù)malloc()和memcpy()。#
80、include<stdio.h> #include<stdlib.h> #include<memory.h> int swap_any(void *s, void *t, unsigned n) void *tmp; tmp = malloc(n); if(tmp = NULL) return 1;
81、; memcpy(tmp, s, n); memcpy(s, t, n); memcpy(t, tmp, n); free(tmp); return 0; int main() int a, b; double x, y;
82、60;char c, d; char s1001, t1001; gets(s); gets(t); swap_any(s, t, sizeof(s); printf("%s %sn", s, t); c = getchar();
83、 getchar(); d = getchar(); getchar(); swap_any(&c, &d, sizeof(char); printf("%c %cn", c, d); scanf("%d %d", &a, &b)
84、; swap_any(&a, &b, sizeof(int); printf("%d %dn", a, b); scanf("%lf %lf", &x, &y); swap_any(&x, &y, sizeof(double); printf(&q
85、uot;%lg %lgn", x, y); 1383Problem H: 動態(tài)的數(shù)組Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 3346 Solved: 1251SubmitStatusWeb BoardDescription輸入N個浮點(diǎn)數(shù),輸出其中第m個第n個數(shù),滿足m<n。-你需要編寫以下4個函數(shù),完成這個程序:double* allocate(int n),在動態(tài)內(nèi)存上分配n個元素的double型數(shù)組,并返回其首地址。void input(double* p, int n),向p中
86、輸入n個double型數(shù)值。void output(double* p, int n),把長度為n的數(shù)組p中符合條件的第m個第n個元素輸出,m和n從標(biāo)準(zhǔn)輸入讀取。void release(double* p),釋放p所指的動態(tài)內(nèi)存空間。函數(shù)的調(diào)用格式見“Append Code”。Input輸入的第一個整數(shù)N(在int范圍內(nèi)),表示后跟N個double類型的浮點(diǎn)數(shù)。輸入的最后是兩個整數(shù)m和n,滿足m<n,m和n在int范圍內(nèi),但不一定在1N之間。Output輸出第m個第n個之間的浮點(diǎn)數(shù),每個數(shù)占一行。若區(qū)間m,n和1,N沒有任何重疊,則輸出“no output”。區(qū)間m,n和1,N有交集時
87、,但給出的n超出第N個數(shù)的范圍,則只需輸出到第N個數(shù),m超出范圍時同樣處理。Sample Input201 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2015 25Sample Output151617181920HINTAppend Codeappend.c, append.cc, #include<stdio.h> #include<stdlib.h> double* allocate(int n) double *p;
88、p = malloc (n * sizeof(double); return p; void input(double *p, int n) int i; for(i = 0; i < n; i +) scanf("%lf", p + i); void output(double* p, int n)
89、60; int a, b, i; scanf("%d%d", &a, &b); if(b <= 0|a >= n) printf("no output"); else
90、60; if(a < 0) a = 0; else a -= 1; if(b > n)
91、 b = n; for(i = a; i < b; i +) printf("%lgn",pi); void release(double*
92、p) free(p); p = NULL; int main() int len; double *array; scanf("%d", &len); array = allocate(len); input(a
93、rray, len); output(array, len); release(array); 1334Problem I: 動態(tài)的字符串排序Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 2841 Solved: 815SubmitStatusWeb BoardDescription把字符串按照ASCII碼序的從小到大排列出來。串的ASCII碼序遵循如下遞歸定義:1 兩串的前n-1個字符相同,第n個字符ASCI
94、I碼序小的排在前面;2 只有兩串的字符完全相同時,才有兩串相等。字符的ASCII碼序比較可以用strcmp()函數(shù)完成。Input第一行輸入為一個整數(shù)N(N<=50,000),后接N行,每行一個字符串,串長不超過100,000。Output輸出為N行,按照字符串的ASCII碼序排列,ASCII碼序小的排前面。Sample Input10abcbcacacacaacababcdabaSample OutputaacabaabcacababcbcccadaHINT用二維數(shù)組很難一次性分配出這么大的空間了,要用到根據(jù)輸入變化的動態(tài)分配的內(nèi)存才行。這里需要動態(tài)的數(shù)據(jù)結(jié)構(gòu),比如,字符指針的數(shù)組“c
95、har *s”,或者是二維的字符指針“char *s”,等等。#include<stdio.h> #include<string.h> #include<stdlib.h> int main() int n, i, j, len; scanf("%d", &n); getchar(); char *sn, *s1; &
96、#160; for(i = 0; i < n; i +) s1 = malloc(sizeof(char) * 100001); gets(s1); len = strlen(s1);
97、 si = malloc(sizeof(char) * (len + 1); strcpy(si, s1); free(s1); int *temp; for(i = 0; i < n - 1; i +)
98、160; for(j = i; j < n; j +) if(strcmp(si, sj) > 0) temp = si;
99、0; si = sj; sj = temp; for(i = 0 ; i < n ; i+)
100、60; printf("%sn", si); free(si); 1048Problem J: 魔方陣Time Limit: 1 Sec Memory Limit: 16 MBSubmit: 3512 Solved: 1623SubmitStatusWeb BoardDescription所謂N階魔方陣,是一個N*N的方陣,其元素由1到N2組成,且方陣每行每列以及對角線的元素和
101、相等。如三階魔方陣:8 1 63 5 74 9 2魔方陣的規(guī)律如下: 從1N*N的 各個數(shù)依次如下規(guī)則存放: (1) 1在第一行中間一列; (2) 每一個數(shù)存放的行比前一個數(shù)的行數(shù)減一,列數(shù)加一(如上的三階方陣5在4的上一行,后一列); (3) 如果上一個數(shù)在第一行,則下一個數(shù)在最后一行,列數(shù)加一; (4) 如果上一個數(shù)在最后一列,則下一個數(shù)在第一列,行數(shù)減一;
102、0; (5) 如果按上述規(guī)則確定的位置已經(jīng)有數(shù),或上一個數(shù)在第一行第N列,則下一個數(shù)放在上一個數(shù)的正下方。Input輸入包含多組數(shù)據(jù),每組為一個小于100的正奇數(shù)。Output對于每個輸入的N,輸出N階魔方陣;兩組數(shù)據(jù)之間用一個空行分隔。方陣中每行每兩個數(shù)之間有一個空格,行首和行末沒有多余的空格。Sample Input3Sample Output8 1 63 5 74 9 2#include <stdio.h> int main() int a,b,c,d,i,j;
103、60; int s100100 ; while(scanf("%d",&b)!=EOF) if(b%2!=0) &
104、#160;for (i=0; i<b; i+) for (j=0; j<b; j+) sij=0;
105、0; d=(b-1)/2; c=0; s0d=1;
106、; for(a=2; a<=b*b; a+) if(c-1>=0)
107、160; if(d+1>b-1)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 前沿動態(tài)營養(yǎng)師考試試題及答案
- 經(jīng)典演出經(jīng)紀(jì)人考試試題及答案
- 逼近考試演出經(jīng)紀(jì)人試題及答案分析
- 現(xiàn)代家政學(xué)考題及答案
- 物理綜合高考題及答案
- 《第七天》讀后感
- 逃家的小兔測試題及答案
- 江西外語外貿(mào)職業(yè)學(xué)院《勞動通論》2023-2024學(xué)年第二學(xué)期期末試卷
- 武昌理工學(xué)院《統(tǒng)計(jì)與分析軟件SPSS的應(yīng)用》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025屆河北省中原名校高三下學(xué)期一練前第二次強(qiáng)化訓(xùn)練歷史試題含解析
- 考試保密培訓(xùn)課件教學(xué)
- 發(fā)電設(shè)備點(diǎn)檢定修管理
- 裝卸作業(yè)安全知識培訓(xùn)課件
- 【高新技術(shù)企業(yè)所得稅稅務(wù)籌劃探析案例:以科大訊飛為例13000字(論文)】
- 眼科手術(shù)配合護(hù)理查房
- 河南省2022年中考語文試題備用卷B卷
- 高空作業(yè)車專項(xiàng)應(yīng)急預(yù)案
- 金融科技的發(fā)展趨勢
- 禮品采購申請單(空表)
- 地震英文課件
- IT設(shè)備維修申請表
評論
0/150
提交評論