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

题目描述:

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

输入:

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

输出:

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

样例输入:
11 B A 
5 @ W
样例输出:
 AAAAAAAAA
ABBBBBBBBBA
ABAAAAAAABA
ABABBBBBABA
ABABAAABABA
ABABABABABA
ABABAAABABA
ABABBBBBABA
ABAAAAAAABA
ABBBBBBBBBA
 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行:每行对应于相应数组的所有极值点下标值,下标值之间用空格分隔。

样例输入:
3
10
10 12 12 11 11 12 23 24 12 12
15
12 12 122 112 222 211 222 221 76 36 31 234 256 76 76 
15
12 14 122 112 222 222 222 221 76 36 31 234 256 76 73
样例输出:
0 7
2 3 4 5 6 10 12
0 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;
}

 

posted @ 2014-09-14 17:25  tinylcy  阅读(284)  评论(0编辑  收藏  举报