日常代码

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;

}

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

 
阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页