博文

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

摘要:#include<iostream.h>#include<stdlib.h>#define N 10int 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<<"整数B :";    for(i=N-1;i>=0;i--) &......

阅读全文(5994) | 评论: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;    }    q->next=head;    q=head;  &nb......

阅读全文(4872) | 评论: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;    cout<<"输出倒数第几个元素:";    cin>>m;  &nb......

阅读全文(5033) | 评论: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;}long Hanoi1(int n, int a, int b, int c, int d){......

阅读全文(4250) | 评论: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];    cout<<"结果为:"<<endl;    cout<......

阅读全文(32364) | 评论: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:满足题意的标记       printf("The weight is broke up as following 4 pieces:");   ......

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