博文

大整数相乘(2006-08-10 16:10:00)

摘要:#include<iostream.h>
#include<stdlib.h>
#define N 10
int main()
{
    int i,j,set=0;
    char k[N];
    int a[N],b[N],c[2*N];
    for(i=0;i<N;i++)//cin.getline(c,N);//for(i=0;i<N;i++) a[i]=c[i]-48;
    {                //cin.getline(c,N);//for(i=0;i<N;i++) b[i]=c[i]-48;
        a[i]=rand()%N;
        b[i]=rand()%N;
    }
    //
    cout<<"整数A :";
    for(i=N-1;i>=0;i--)
        cout<<a[i];
    cout<<endl;
    cout<<&quo......

阅读全文(5931) | 评论:0

 约瑟夫环(2006-08-10 10:04:00)

摘要:#include<iostream.h>
struct my
{
    int x;
    my *next;
};
int main()
{
    my *p,*q,*head;
    int n,i=0,sum=0,frist,b;
    cout<<"请依次输入开始的总人数,从第几个开始,报几删除 :"<<endl;
    cin>>n>>frist>>b;
    cout<<"结果序列显示 :";
    for(i=0;i<n;i++)
    {
        p=new my;
        p->x=i+1;
        if(i==0)
            head=p;
        else q->next=p;
        q=p;
    }

阅读全文(4182) | 评论:0

输出链表中倒数第m个元素(2006-08-10 10:02:00)

摘要:#include<iostream.h>
struct List
{
    int data;
    List *next;
};
int sum=0;
int main()
{
    int n,m;
    List *head,*p,*q;
    head=new List;
    p=head;
    cout<<"input list length:";
    cin>>n;
    cout<<"input list data:";
    for(int i=0;i<n;i++)
    {
        cin>>p->data;
        q=new List;
        p->next=q;
        p=q;
    }
    q->next=NULL;
  &nb......

阅读全文(4963) | 评论:0

四塔问题(2006-08-05 15:53:00)

摘要:“汉诺塔”,是一个众所周知的古老游戏。现在我们把问题稍微改变一下:如果一共有4根柱子,而不是3根,那么至少需要移动盘子多少次,才能把所有的盘子从第1根柱子移动到第4根柱子上呢?
*****************************************************
#include <iostream.h>
#include <stdlib.h>

long count;
long m;
const long ccMax=1000;
long tt[ccMax];
long tc[ccMax];
long fc[ccMax];
long Hanoi(int n, int a, int b, int c)
{
    long t1,t2;
    t1=t2=0;
    if ( tc[n] != 0) return tc[n];
    if (n==1) return 1;
    else if (n>0)
    {
        t1=Hanoi(n-1,a,c,b);
        t2=Hanoi(n-1,b,a,c);
    }
    return tc[n]=t1+t2+1;
}
l......

阅读全文(4182) | 评论:0

多项式求和(递归)(2006-08-05 11:05:00)

摘要:#include <iostream.h>
int f(int x,int n)
{
    int a=1;
    for(int i=1;i<=n;i++)
    a*=x;
    return a;
}
int fn(int n,int x,int a[])
{
    if(n==0)
        return a[0];
    else
        return fn(n-1,x,a)+a[n]*f(x,n);
}
int main()
{
    int n,x,count=0;
    int a[20];    
    cout<<"输入n和x:"<<endl;
    cin>>n>>x;    
    cout<<"输入a[]:"<<endl;
    for(int i=0;i<=n;i++)
    cin>>a[i];
&......

阅读全文(5127) | 评论:0

梅齐亚克砝码问题(转载)(2006-08-04 15:55:00)

摘要:法国数学家梅齐亚克在他著名的《数字组合游戏》(1962)
中提出了一个问题:
 一位商人有一个重40磅的砝码,一天不小心将砝码摔成了
 四块。后来商人称得每块的重量都是整磅数,而且发现这
 四块碎片可以在天平上称1至40磅之间的任意重量。请问
 这四块碎片各重多少?
 问题分析与算法设计
 题目中给出的条件是“在天平上”,这意味着:同一砝码
 既可以放在天平的左侧,也可以放在天平的右侧。若规定
 重物只能放在天平的左侧,则当天平平衡时有:
 重物重量+左侧砝码重量总和=右侧砝码重量总和
 由此可得:
 重物重量=右侧砝码重量总和-左侧砝码重量总和
 编程时只要根据以上公式,使得
 右侧砝码重量总和-左侧砝码重量总和
 可以表示1到40之间的全部重量即可。编程中要注意的是:
 怎样采用一种简单的方法来表示一个砝码是在天平的左侧
 还是在天平的右侧,或是根本没有使用。
 以下程序采用1、 -1和0分别表示上述三种情况。
 程序与程序注释
**************************************************/

 
#include<stdio.h>
#include<math.h>
int main(void)
{
    int weight1,weight2,weight3,weight4;//摔坏的四块砝码的重量
    int d1,d2,d3,d4;//四块砝码是放在左盘还是右盘,或者根本没有使用
    int x,flag;//x:可用四块砝码称出的重量,flag:满足题意的标记
   
    ......

阅读全文(3672) | 评论:0