算法基础

  • 试题1:
    在笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚),已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物?
#include 
int main()
{
    int i,j,k;
    printf("请输入测试用例:");
    scanf("%d",&i);
    for(k=0;k
  • 试题2:
    国际象棋的棋盘是黑白相间的 8 * 8 的方格,棋子放在格子中间。
    王、后、车、象的走子规则如下:
    王:横、直、斜都可以走,但每步限走一格。
    后:横、直、斜都可以走,每步格数不受限制。
    车:横、竖均可以走,不能斜走,格数不限。
    象:只能斜走,格数不限。
    写一个程序,给定起始位置和目标位置,计算王、后、车、象从起始位置走到目标位置所需的最少步数。
#include 
#include 
#define MAX_SIZE 10
int main()
{
int testCase;
int i;
scanf("%d",&testCase);
for(i=0;i
  • 试题3:
    某校大门外长度为 L 的马路上有一排树,每两棵相邻的树之间的间隔都是1 米。我们可以把马路看成一个数轴,马路的一端在数轴0 的位置,另一端在L 的位置;数轴上的每 个整数点,即0,1,2,……,L,都种有一棵树。由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些 区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。
#include 
int main()
{
    int L,i,n,j,count;
    bool trees[10001];
    for(i=0;i<10001;i++)
        trees[i]=true;
    scanf("%d %d",&L,&n);
    for(i=0;i
  • 试题4:
    输出所有小于等于n(n为一个大于2的正整数)的素数
#include 
#include 
int prime(int x)
{
    int i;
    for(i=2;i2)
    {
        printf("%4d",2);
        j++;
    }
    if(num==1) printf("1");
    for(i=3;i
  • 试题5:
    求一个正整数的各位数之和
#include 
int main()
{
    int num,m,sum=0;
    scanf("%d",&num);
    while(num)
    {
        m=num%10;
        sum+=m;
        num=num/10;
    }
    printf("%4d\n",sum);
    return 0;
}
  • 试题6:
    求一个字符串是否为回文
#include 
#include 
#define MAX_SIZE 100
int main()
{
    char num[MAX_SIZE];
    int i,j,flag;
    scanf("%s",num);
    flag=0;
    for(i=0,j=strlen(num)-1;i<=j;i++,j--)
    {
        if(num[i]!=num[j])
        {
        flag=1;
        break;
        }
    }
    if(flag==0) printf("是回文数");
    else printf("不是回文数");
    return 0;
}
  • 试题7:
    sicily 1020. Big Integer
    给出n个整数,和一个大整数x。 求x对每个数取模的结果 n<=100, 1
#include 
#include 
#define MAX_SIZE 100
using namespace std;
int mod(string input,int m)
{
    int res=0;
    for(int i=0;i>testCase;
    while(testCase--)
    {
        int num;
        cin>>num;
        for(int i=0;i>str[i];
         
        string bignum;
        cin>>bignum;
        cout<<"(";
        for(int j=0;j
  • 试题8:
    求:5*5阶螺旋方阵
#include 
#define MAX_SIZE 100
void func(int a[MAX_SIZE][MAX_SIZE],int n)
{
    int i,j,m,k=0;
    if(n%2==0) m=n/2;
    else m=n/2+1;
    for(i=0;i=i;j--)
        {
            k++;
            a[n-i-1][j]=k;
        }
 
        for(j=n-i-2;j>=i+1;j--)
        {
            k++;
            a[j][i]=k;
        }
    }
}
 
int main()
{
    int num,i,j;
    scanf("%d",&num);
    int a[MAX_SIZE][MAX_SIZE];
    func(a,num);
    for(i=0;i

-试题9:
求解n皇后问题

#include 
#include 
bool place(int k, int *X)
{
        int i;
        i=1;
        while(i0)
       {
             X[k]=X[k]+1; //不断的在解空间里从小到大的试探
  
             while((X[k]<=n)&&(!place(k, X)))
                      X[k]=X[k]+1;                     //不符合条件的马上再取解空间的下一个值来试探。
  
             if(X[k]<=n)   //找到了一个位置,而且是合法的
                  if(k==n)   //是不是最后一个皇后,若是则得出一个完整解
                 {
                          for(int i=1;i<=n;i++)
                          cout<>n;
                 X=new int[n];
                 cout<<"问题的解有:"< to run again"< to exit"<>i;
         }
}

你可能感兴趣的:(算法基础)