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; }
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; }

浙公网安备 33010602011771号