2002年北理复试上机题目A

1、某人有 8 角的邮票 5 张,1 元的邮票 4 张,1元 8 角的邮票 6 张,用这些邮票中的一张或若干张可以得到多少种不同的邮资?

#include<cstdio>
int a[250]; int ans = 0; bool find(int x) { for (int i = 0; i < ans; i++) { if (a[i] == x)return true; } return false; } int main() { for (int i = 0; i <= 5; i++) { for (int j = 0; j <= 4; j++) { for (int k = 0; k <= 6; k++) { int tmp = 8 * i + 10 * j + 18 * k; if (tmp == 0)continue; if (find(tmp))continue; else { a[ans++] = tmp; } } } } printf("%d\n", ans); return 0; }
#include <cstdio>
#include <set>
using namespace std;
 
int main()
{
    set<int> s;
    int num[3]={5,4,6};
    int money[3]={8,10,18};
    int i,j,k,count;
    for(i=0;i<=num[0];i++)
    {
        for(j=0;j<=num[1];j++)
        {
            for(k=0;k<=num[2];k++)
            {
                if((i+j+k)>0)
                {
                    count=money[0]*i+money[1]*j+money[2]*k;
                    //printf("%5d",count);
                    s.insert(count);
                }
            }
        }
    }
    printf("%d\n",s.size());
    return 0;
}
Set解法

2、 输入 n 值, 使用递归函数,求杨辉三角形中各个位置上的值,按照如下形式打印输出图形。例如:当n=6 时。

                          1

                      1       1

                 1       2       1

            1       3        3       1

        1       4       6        4      1

    1      5       10     10      5      1

#include<iostream>
using namespace std;

int T(int i, int j)
{
    if (j == 1 || j == i)return 1;
    return T(i - 1, j - 1) + T(i - 1, j);
}

int main()
{
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        for (int j = 0; j < n - i; j++)cout << " ";
        for (int j = 1; j <= i; j++)
        {
            if (j == 1)cout << T(i, j);
            else cout << " "<< T(i, j);
        }
        cout << endl;
    }
    return 0;
}
posted @ 2019-08-11 11:54  郭怡柔  阅读(126)  评论(0)    收藏  举报