博文
大整数相乘(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--) &......
约瑟夫环(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......
输出链表中倒数第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......
四塔问题(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){......
多项式求和(递归)(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<......
梅齐亚克砝码问题(转载)(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:"); ......
