1.用给定的几种钱币凑成某个钱数,一般而言有多种方式。例如:给定了6种钱币面值为2、5、10、20、50、100,
用来凑 15元,可以用5个2元、1个5元,或者3个5元,或者1个5元、1个10元,等等。显然,最少需要2个钱币才能凑成15元。
你的任务就是,给定若干个互不相同的钱币面值,编程计算,最少需要多少个钱币才能凑成某个给出的钱数。
#include <iostream>
#include <algorithm>//是c++特有的STL模板的算法头文件包括sort(),stable_sort()等等
using namespace std;
int main()
{
int money,n,i,s,a[10];
printf("输入要凑钱的总数为:");
while(cin>>money)
{
s=0;
if(money==0) break;
cin>>n;
printf("给定的%d种钱币面值为:",n);
for(i=0;i<n;i++)
{
cin>>a[i];
}
sort(a,a+n);//排序
for(i=n-1;i>=0;i--)
{
if(money>=a[i])
{
s=s+money/a[i];
money=money%a[i];
}
if(money==0) break;
}
if(money!=0)
cout<<"Impossible"<<endl;
else
printf("最少需要%d个钱币才能凑成某个给出的钱数",s);
}
return 0;
int main()
{
int N,i,j,a[100][100];
while( scanf("%d",&N)!=EOF)//End Of File 理解为换行符
{
a[0][0]=1;
printf("%d",a[0][0]);
for(i=0;i<N-1;i++)
{
a[i+1][0]=a[i][0]+i+1;
for(j=0;j<N-i-1;j++)
{
a[i][j+1]=a[i][j]+j+i+2;
printf(" %d",a[i][j+1]);
}
printf("\n%d",a[i+1][0]);
}
}
printf("\n");
return 0;
}
用来凑 15元,可以用5个2元、1个5元,或者3个5元,或者1个5元、1个10元,等等。显然,最少需要2个钱币才能凑成15元。
你的任务就是,给定若干个互不相同的钱币面值,编程计算,最少需要多少个钱币才能凑成某个给出的钱数。
#include <iostream>
#include <algorithm>//是c++特有的STL模板的算法头文件包括sort(),stable_sort()等等
using namespace std;
int main()
{
int money,n,i,s,a[10];
printf("输入要凑钱的总数为:");
while(cin>>money)
{
s=0;
if(money==0) break;
cin>>n;
printf("给定的%d种钱币面值为:",n);
for(i=0;i<n;i++)
{
cin>>a[i];
}
sort(a,a+n);//排序
for(i=n-1;i>=0;i--)
{
if(money>=a[i])
{
s=s+money/a[i];
money=money%a[i];
}
if(money==0) break;
}
if(money!=0)
cout<<"Impossible"<<endl;
else
printf("最少需要%d个钱币才能凑成某个给出的钱数",s);
}
return 0;
}
2.蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。
【输入】 本题有多组数据,每组数据由一个正整数N组成。(N不大于100)
【输出】 对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。矩阵三角中同一行的数字用一个空格分开。
行尾不要多余的空格。
【输入范例】 5
【输出范例】 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11
#include<stdio.h>int main()
{
int N,i,j,a[100][100];
while( scanf("%d",&N)!=EOF)//End Of File 理解为换行符
{
a[0][0]=1;
printf("%d",a[0][0]);
for(i=0;i<N-1;i++)
{
a[i+1][0]=a[i][0]+i+1;
for(j=0;j<N-i-1;j++)
{
a[i][j+1]=a[i][j]+j+i+2;
printf(" %d",a[i][j+1]);
}
printf("\n%d",a[i+1][0]);
}
}
printf("\n");
return 0;
}