2005年4月25日第16期电脑报编程点将 题目:小明有五本新书,要借给A,B,C三位小朋友,若每人每次只能借一本,则可以有多少种不同的借法? 我的程序: /*算法思想:其实这是一个排列的问题,这里我们假设五本书的编号室从1——5, 用数组ABC[3]来表示A,B,C三个人,其数值表示这三个人所借的是什么书 (也就是哪个编号的书)。穷举使三个人都可能借到每一本书, 当然,不能两个人借同一本书。 */ #include<iostream> using namespace std; void main() { int ABC[3],count=0; for(ABC[0]=1;ABC[0]<=5;ABC[0]++) for(ABC[1]=1;ABC[1]<=5;ABC[1]++) for(ABC[2]=1;ABC[2]<=5;ABC[2]++) if(ABC[0]!=ABC[1]&&ABC[0]!=ABC[2]&&ABC[1]!=ABC[2]) count++; cout<<"总的借书方式有:"<<count<<"种"<<endl; } 扩展:在每一种可能的借法,输出ABC三位读者分别借到的书的编号: #include<iostream> using namespace std; void main() { int ABC[3],count=0; for(ABC[0]=1;ABC[0]<=5;ABC[0]++) for(ABC[1]=1;ABC[1]<=5;ABC[1]++) for(ABC[2]=1;ABC[2]<=5;ABC[2]++) if(ABC[0]!=ABC[1]&&ABC[0]!=ABC[2]&&ABC[1]!=ABC[2]) { count++; cout<<"第"<<count<<"种借法中ABC所借的书的编号分别是:" <<ABC[0]<<" "<<ABC[1]<<" "<<ABC[2]<<"\n"; } cout<<"总的借书方式有:"<<count<<"种"<<endl; }

评论