基础练习

 I 0-1字符串

对于长度为N位(N<32)的一格字符串,每一位都可能是0或1,请从小到大输出者2^N种01字符串

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    int n;
    scanf("%d",&n);
    char *t = (char *)malloc(sizeof(char)*(n+1));
    memset(t,'0',n);
    t[n] = '';
    for(int i=0;i<(1 << n);i++)//2^n次
    {
        puts(t);
        t[n-1] += 1;
        if(t[n-1] > '1')
        {
            for(int j=2;j<=n;j++)
            {
                t[n-j] += 1;
                t[n-j+1] ='0';
                if(t[n-j] == '1')
                    break;
            }
        }
    }
    return 0;
}

II杨辉三角形

杨辉三角形又称Paskal三角形,它的第i+1行是(a+b)^i的展开式的系数,给出n,输出它的前n行

样例输入:4

样例输出:

1

1 1

1 2 1

1 3 3 1

分析:三角形的每个数字等于它的两肩上的数字相加

//f(i,1)=f(i,i)=1
//f(i,k)=f(i,k-1)+f(i,k)(1<k<i,i>2)
#include <stdio.h>
int f[34][34];
int main()
{
    int n;
    scanf("%d",&n);
    if(n == 1)
    {
        printf("1
");
    }
    else if(n == 2){
        printf("1
1 1
");
    }
    else{
        printf("1
");
        for(int t=1;t<n;t++)
            f[t][0] = f[t][t] = 1;
        for(int i=1;i<n;i++)
        {
            for(int j=0;j<=i;j++)
            {
                if(j == 0)
                    printf("1 ");
                else if(j == i){
                    printf("1
");
                }
                else{
                    f[i][j] = f[i-1][j-1] + f[i-1][j];
                    printf("%d ",f[i][j]);
                }
            }
        }
    }

    return 0;
}

 III特殊回文数

输入一个正整数n(<=54),编程求所有的5位和6位十进制回文数,满足各位数字之和等于n,按从小到大的顺序输出满足条件的整数,每个整数占一行

分析:取对称的3位数字,满足各位数字之和为n的即为对应的回文数

#include <stdio.h>
int main()
{
    int n,a,b,c;
    scanf("%d",&n);
    for(a=1;a<10;a++)
        for(b=0;b<10;b++)
            for(c=0;c<10;c++)
            {
                if(2*(a + b) + c == n)
                    printf("%d
",a*10001+b*1010+c*100);//5位回文数
            }
    for(a=1;a<10;a++)
        for(b=0;b<10;b++)
            for(c=0;c<10;c++)
            {
                if(2*(a + b + c) == n)
                    printf("%d
",a*100001+b*10010+c*1100);//6位回文数
            }
    return 0;
}
原文地址:https://www.cnblogs.com/emptyCoder/p/5223638.html