Uriel's Corner

Research Associate @ Harvard University / Research Interests: Computer Vision, Biomedical Image Analysis, Machine Learning
posts - 0, comments - 50, trackbacks - 0, articles - 594
这套也都是大水。。

1. 有多少不同的面值组合?
//2002年清华大学计算机研究生机试题(第I套) 有多少不同的面值组合?

#include
<stdio.h>
#include
<stdlib.h>
#include
<string.h>

int flg[300];

int main() {
    
int i, j, k, tmp;
    memset(flg, 
0sizeof(flg));
    
for(i = 0; i <= 5++i) {
        
for(j = 0; j <= 4++j) {
            
for(k = 0; k <= 6++k) {
                tmp 
= 8 * i + 10 * j + 18 * k;
                
if(tmp != 0 && !flg[tmp]) flg[tmp] = 1;
            }

        }

    }

    
int cnt = 0;
    
for(i = 1; i <= 8 * 5 + 10 * 4 + 18 * 6++i)
        
if(flg[i]) cnt++
    printf(
"%d\n", cnt);
    
return 0;
}


2. 杨辉三角形
    递归函数还是很弱。。异常丑陋。。
//2002年清华大学计算机研究生机试题(第I套) 杨辉三角形

#include
<stdio.h>
#include
<stdlib.h>

int ans[100][100];

void cal(int n) {
    
if(n == 1return;
    cal(n 
- 1);
    ans[n 
- 1][0= 1;
    printf(
"1");
    
for(int i = 1; i < n; ++i) {
        ans[n 
- 1][i] = ans[n - 2][i - 1+ ans[n - 2][i];
        printf(
" %d", ans[n - 1][i]);
    }

    ans[n 
- 1][n] = 1;
    puts(
" 1");
}


int main() {
    
int n, i, j;
    
while(~scanf("%d"&n)) {
        ans[
0][0= ans[0][1= 1;
        puts(
"1 1");
        cal(n 
- 1);
    }

    
return 0;
}


3. 对称平方数
//2002年清华大学计算机研究生机试题(第II套) 有对称平方数

#include
<stdio.h>
#include
<stdlib.h>
#include
<string.h>

int main() {
    
int i, j, tp, k, p[9];
    
for(i = 1; i < 256++i) {
        tp 
= i * i;
        k 
= 0;
        
while(tp > 0{
            p[k
++= tp % 10;
            tp 
/= 10;
        }

        
for(j = 0; j < k / 2++j) {
            
if(p[j] != p[k - 1 - j]) break;
        }

        
if(j == k / 2) printf("%d\n", i);
    }

    
return 0;
}

2011.09.11 PS:这题Rejudge了... 0也要输出...

4. 斐波那契数列
    丑陋的代码。。
//2002年清华大学计算机研究生机试题(第II套) 斐波那契数列

#include
<stdio.h>
#include
<stdlib.h>

void cal(int n, int p1, int p2) {
    printf(
" %d", p1 + p2);
    
if(!n) return;
    cal(n 
- 1, p2, p1 + p2);
}


int main() {
    
int n, i;
    
while(~scanf("%d"&n)) {
        puts(
"0");
        
for(i = 1; i < n; ++i) {
            printf(
"0 1");
            cal(
2 * (i - 1), 01);
            puts(
"");
        }

    }

    
return 0;
}

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理