1.某人有 8 角的邮票 5 张,1 元的邮票 4 张,1 元 8 角的邮票 6 张,用这些邮票中的一张或若干张可以得到多少种不同的邮资?
C++
#include <iostream>
#include <set>
using namespace std;
int main()
{
set<int> s; //此题避免使用 double ,可能会因为精确度的问题造成相同的数不一致
int t;
for(int i=0;i<=5;i++)
{
for(int j=0;j<=4;j++)
{
for(int k=0;k<=6;k++)
{
if(!(i==j && j==k && k==0)) //注意没有三种都为 0 的情况
{
t=8*i+10*j+18*k;
s.insert(t);
}
}
}
}
cout<<"组合数为:"<<s.size()<<endl;
return 0;
}
Go
package exam2002a
import "fmt"
//Set is used to grouping the stamp
func Set() {
var a = [190]int{0}
count := 0
for i := 0; i <= 5; i++ {
for j := 0; j <= 4; j++ {
for k := 0; k <= 6; k++ {
t := 8*i + 10*j + 18*k
a[t] = 1
}
}
}
for i := 1; i < 190; i++ {
if a[i] == 1 {
count++
}
}
fmt.Printf("组合数为:%d\n", count)
}
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
C++
#include <iostream>
using namespace std;
int number(int i,int j)
{
if(j==1||i==j)
{
return 1;
}
else
{
return number(i-1,j)+number(i-1,j-1);
}
}
int main()
{
int h,t;
cin>>h;
for(int i=1;i<=h;i++)
{
for(int j=1;j<=h-i;j++)
{
cout<<" "; //输出数字前的空格
}
for(int k=1;k<=i;k++)
{
t=number(i,k);
cout<<t<<" "; //数字间的空格以此输出
}
cout<<endl;
}
return 0;
}
Go
package exam2002a
import "fmt"
//Number is used to compute the number of Triangle
func Number(i, j int) int {
if j == 1 || i == j {
return 1
}
return Number(i-1, j) + Number(i-1, j-1)
}
//Triangle is used to print Yang Hui Triangle
func Triangle(h int) {
for i := 1; i <= h; i++ {
for j := 1; j <= h-i; j++ {
fmt.Print(" ")
}
for k := 1; k <= i; k++ {
t := Number(i, k)
fmt.Printf("%d ", t)
}
fmt.Println()
}
}