首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

JSU省份赛队员选拔赛个人赛1(Coin Change、Fibbonacci Number、Max Num、单词数、无限的路、叠筐)

2013-09-13 
JSU省赛队员选拔赛个人赛1(Coin Change、Fibbonacci Number、Max Num、单词数、无限的路、叠筐)JSU省赛队员选拔

JSU省赛队员选拔赛个人赛1(Coin Change、Fibbonacci Number、Max Num、单词数、无限的路、叠筐)

JSU省赛队员选拔赛个人赛1

一、题目概述:

    A、Coin Change(暴力求解、动态规划)
    B、Fibbonacci Number(递推求解)

    C、Max Num(排序、比较)

    D、单词数(字符串比较、库函数运用)

    E、无限的路(平面几何)

    F、叠筐(规律输出)

二、解题报告:


A、Coin Change

      给一个钱的总金额,求出用100个以内的50分、25分、10分、5分、1分硬币拼成该金额的不同拼法。

      直接暴力,打表什么的都是浮云。开始总觉得用暴力求解显得自己没风度,不够高端霸气上档次。当面临各种WA时,什么都是浮云,唯有AC才是王道。

       用i,j,k,x,y分别表示50分、25分、10分、5分、1分硬币的数量,用四重循环直接暴力(不用五层。剩下的变量直接可以求得)。当y=n-x*5-k*10-j*25-i*50;并且y不小于0,硬币总数不大于100的时候,表示这种拼法是可以的,计数变量sum自加一,最后直接输出计数变量即可。

#include<stdio.h>int main(){    //freopen("in.txt","r",stdin);    int n,i,j;    char a[2],b[2],c;    char pi[85][85];    int f=0;    while(scanf("%d%s%s",&n,a,b)!=EOF)    {        if(f)printf("\n");   //案例间的换行        if(n==1)  //要是只有1个            printf("%c\n",a[0]);        else        {            c=a[0];            for(i=n/2; i>=0; i--)  //从里到外(填充)            {                for(j=i; j<=n-i-1; j++)                {                    pi[i][j]=c;  //上面一行                    pi[n-i-1][j]=c;   //下面一行                    pi[j][i]=c;   //左边一列                    pi[j][n-i-1]=c;   //右边一列                }                if(c==a[0])c=b[0];   //更换“填充物”                else c=a[0];            }            //pi[n/2][n/2]=a[0];            for(i=0; i<n; i++)            {                for(j=0; j<n; j++)                {                    if((i==0&&j==0)||(i==0&&j==n-1)||(i==n-1&&j==0)||(i==n-1&&j==n-1))  //“剪角”                        printf(" ");                    else                        printf("%c",pi[i][j]);                }                printf("\n");            }        }        f=1;    }    return 0;}










热点排行
Bad Request.