三角形判別
找最大和
輸出數字時通常都是
cout>>數字>>” “;
所以最後一個數字後會有空白
但實作題通常要求「最後一個數字後無空白」
建議
輸出迴圈跑完後,加上:
cout>>”\b”;
C標準語言程式庫
http://tw.gitbook.net/c_standard_library/c_function_isalpha.html
-----------------------------------------------
氣泡排序(Bubble sorting)
資料結構中最簡單之排序法。所謂氣泡排序法就是相臨資料互相比較,若發現資料順序不對,就將資料互換。依次由上往下比,則結果將如氣泡般,依次由下往上浮起。
【分析】
1. 比較之回合數=資料數(n)-1。
2. 每一回合至少有一資料可以排列至正確之次序。
3. 時間複製度,最差與平均時間O(n2)
4. 需要一個額外(元素)空間。
5. 為一穩定排序。
6. 資料量小時,使用效果佳。
【原理】
1. 每一回合逐一比較相臨資料,依排序之順序交換位置。
2. 每回合至少會有一次交換位置,至沒交換位置則停止。
【演算法】
BubSort(int A[], int n) //氣泡排序法之副程式
{
int i, j , k,t=1, Temp,sp;
for (i=n-1; i>0; i--)
{
sp=1;
for (j =0; j <=i; j++)
if (A[j] > A[j+1])
{ //兩數交換位置
Temp = A[j];
A[j] = A[j+1];
A[j+1] = Temp;
sp=0;
}
if (sp==1) break;
}
}
-----------------------------------------------
1051029apcsconcept
void F( ) {
char t, item[] = {'2', '8', '3', '1', '
int a, b, c, count = 5;
for (a=0; a<count-1; a=a+1) { a<4
c = a; c=0
t = item[a]; t=item[0]=2
for (b=a+1; b<count; b=b+1) {
if (item[b] < t) {
c = b;
t = item[b];
}
if ((a==2) && (b==3)) {
printf ("%c %d\n", t, c);
}
}
}
}
偷懶解法:
由後面反推,從a=2來解
a=2
c=a=2
t=item[2]=3
b=3
item[3]1<3
t=1 ,c=3
3
int K(int a[], int n) {
if (n >= 0)
return (K(a, n-1) + a[n]);
else
return 0;
}
int G(int n){
int a[] = {5,4,3,2,1};
return K(a, n);
}
4
int a=2, b=3;
int c=4, d=5;
int val;
val = b/a + c/b + d/b; 1+1+1(無條件捨去)
printf ("%d\n", val);
5
int a[9] = {1, 3, 5, 7, 9, 8, 6, 4, 2};
int n=9, tmp;
for (int i=0; i<n; i=i+1) {
tmp = a[i]; tmp=a[0]
a[i] = a[n-i-1]; a[0]=a[8]
a[n-i-1] = tmp; a[8]=tmp=a[0]
}
for (int i=0; i<=n/2; i=i+1)
printf ("%d %d ", a[i], a[n-i-1]);
a[9]={1,3,5,7,9,8,6,4,2}
i=0{2,3,5,7,9,8,6,4,1}
i=1{2,4,5,7,9,8,6,3,1}
i=2{2,4,6,7,9,8,5,3,1}
i=3{2,4,6,9,7,8,5,3,1}
以此類推
a[0],a[8],a[1],a[7]
6
int F(int a) {
if ( <condition> )
return 1;
else
return F(a-2) + F(a-3);
}
F(7)=F(5)+F(4)
=F(3)+F(2)+F(2)+F(1)
=F(1)+F(0)+F(0)+F(-1)+F(-1)+F(-2)
以此類推回傳12 ,a<0
8. 下面哪組資料若依序存入陣列中,將無法直接使用二分搜尋法搜尋資料?
k有序
9
if (s>=90) {
printf ("A \n");
}
else if (s>=80) {
printf ("B \n");
}
else if (s>60) {
printf ("D \n");
}
else if (s>70) {
printf ("C \n");
}
else {
printf ("F\n");
}
60,70-79共11個
10
imt K (int p[], int v) {
if (p[v]!=v) {
p[v] = K(p, p[v]);
}
return p[v];
}
void G (int p[], int l, int r) {
int a=K(p, l), b=K(p, r);
if (a!=b) {
p[b] = a;
}
}
int main (void) {
int p[5]={0, 1, 2, 3, 4};
G(p, 0, 1);
G(p, 2, 4);
G(p, 0, 4);
return 0;
}
11
int maze[5][5]= {{1, 1, 1, 1, 1},
{1, 0, 1, 0, 1},
{1, 1, 0, 0, 1},
{1, 0, 0, 1, 1},
{1, 1, 1, 1, 1} };
int count=0;
for (int i=1; i<=3; i=i+1) {
for (int j=1; j<=3; j=j+1) {
int dir[4][2] = {{-1,0}, {0,1}, {1,0}, {0,-1}};
for (int d=0; d<4; d=d+1) {
if (maze[i+dir[d][0]][j+dir[d][1]]==1) {
count = count + 1;
}
}
}
}
迷宮
15
int i, sum, arr[10];
for (int i=0; i<10; i=i+1)
arr[i] = i;
sum = 0;
for (int i=1; i<9; i=i+1)
sum = sum - arr[i-1] + arr[i] + arr[i+1];
printf ("%d", sum);
sum=sum -arr[0] + arr[1] + arr[2]
-0 1 2
-1 2 3
-2 3 4
-3 4 5
以此類推
-7 8 9
2+~9+8=52
17
代入法
18
void G (int a){
printf ("%d ", a);
if (a>=3)
return;
else
G(a+1);
printf ("%d ", a);
}
G(1)
printf 1
G(2)
printf 2
G(3)
printf 3
return
G(2)
printf 2
G(1)
printf 1
21
代入法
=2,=1
(A)6*G(2,0)
(B)7*G(1,0)
(C)8*G(2,0)
(D)9*G(2,0)
22D2SA
23
int i=2, x=3;
int N=65536;
while (i <= N) {
i = i * i * i;
x = x + 1;
}
printf ("%d %d \n", i, x);
i=2
i=2的3次方
x=4
i=2的3次方
i=2的9次方
x=5
i=2的9次方
i=2的27次方
x=6
24
int G (int a, int x) {
if (x == 0)
return 1;
else
return (a * G(a, x - 1));
}
G(3,7)
=3*G(3,6)
以此類推
=3*3*3*3*3*3*3G(3,0)
25
慢慢跑
search(, , )
search(, , )
search(, , )
search(, , )
沒有留言:
張貼留言