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