首页 > 代码库 > 题目1126:打印极值点下标 题目1432:叠筐

题目1126:打印极值点下标 题目1432:叠筐

题目描述:

把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。

输入:

输入是一个个的三元组,分别是,外筐尺寸n(n为满足0<n<80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符;

输出:

输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。叠筐与叠筐之间应有一行间隔。

样例输入:
11 B A 5 @ W
样例输出:
 AAAAAAAAAABBBBBBBBBAABAAAAAAABAABABBBBBABAABABAAABABAABABABABABAABABAAABABAABABBBBBABAABAAAAAAABAABBBBBBBBBA AAAAAAAAA @@@@WWW@@W@W@@WWW@ @@@

#include "stdio.h" char buf[80][80]; void Func(int x,int m,char ch){    int i,j;    for(i=x;i<=x+m-1;i++)        for(j=x;j<=x+m-1;j++)            buf[i][j]=ch;}  int main(int argc, char* argv[]){    int i,j,n;    char ch1,ch2,temp1,temp2;;    while(scanf("%d %c %c",&n,&ch1,&ch2)!=EOF){        if((n-1)%4==0){            temp1=ch1;            temp2=ch2;        }        else{            temp1=ch2;            temp2=ch1;        }        for(i=0;i<=n/2-1;i++){            if(i%2==0)                Func(i,n-2*i,temp1);            else                Func(i,n-2*i,temp2);         }        buf[n/2][n/2]=ch1;        buf[0][0]=buf[0][n-1]=buf[n-1][0]=buf[n-1][n-1]= ;        for(i=0;i<=n-1;i++){            for(j=0;j<=n-1;j++)                printf("%c",buf[i][j]);            printf("\n");        }    }    return 0;}

 

 

 

题目描述:

在一个整数数组上,对于下标为i的整数,如果它大于所有它相邻的整数,
或者小于所有它相邻的整数,则称为该整数为一个极值点,极值点的下标就是i。

输入:

每个案例的输入如下:

有2×n+1行输入:第一行是要处理的数组的个数n;
对其余2×n行,第一行是此数组的元素个数k(4<k<80),第二行是k个整数,每两个整数之间用空格分隔。

输出:

每个案例输出为n行:每行对应于相应数组的所有极值点下标值,下标值之间用空格分隔。

样例输入:
31010 12 12 11 11 12 23 24 12 121512 12 122 112 222 211 222 221 76 36 31 234 256 76 76 1512 14 122 112 222 222 222 221 76 36 31 234 256 76 73
样例输出:
0 72 3 4 5 6 10 120 2 3 10 12 14
来源:
2008年北京大学方正实验室计算机研究生机试真题
#include "stdio.h" int main(int argc, char* argv[]){    int n,i,j,k;    int buf[1000][81];    int length[1000];    while(scanf("%d",&n)!=EOF){        for(i=0;i<=n-1;i++){            scanf("%d",&k);            length[i]=k;            for(j=0;j<=k-1;j++)                scanf("%d",&buf[i][j]);        }        for(i=0;i<=n-1;i++){            int flag=0;            if(buf[i][0]!=buf[i][1]){                printf("0");                flag=1;            }            for(j=1;j<=length[i]-2;j++)                if((buf[i][j]>buf[i][j-1]&&buf[i][j]>buf[i][j+1])||(buf[i][j]<buf[i][j-1]&&buf[i][j]<buf[i][j+1])){                    if(j==1&&flag==1)                        printf(" %d",j);                    else if(j==1&&flag==0)                            printf("%d",j);                        else if(j>1&&flag==1)                                printf(" %d",j);                            else if(j>1&&flag==0){                                printf("%d",j);                                flag=1;                            }                }            if(buf[i][length[i]-1]!=buf[i][length[i]-2])                printf(" %d",length[i]-1);            printf("\n");        }    }    return 0;}

 

题目1126:打印极值点下标 题目1432:叠筐