65,210
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
int main()
{
int i, j, k;
for(i = 0; i <= 10; i++)
{
for(j = 0; j <= 5; j++)
{
for(k = 0; k <= 2; k++)
{
int sum = i*1 + j*2 + k*5;
if (sum == 10)
printf("1: %d, 2: %d, 5: %d\n", i, j, k);
}
}
}
return 0;
}
#include <iostream>
#include <stdlib.h>
using namespace std;
void fac(int i);
int main(int argc, char *argv[])
{
fac(0);
system("PAUSE");
return 0;
}
void fac(int i)
{
while(i <=2) //i代表5角钱个数
{
int j=0,k=0,num=0,p; //j代表2角钱个数
p = 10-i*5; //k代表1角钱个数
if(p==0)
{
num++;
cout <<"方法" <<num <<"\t" <<"1角硬币个数" <<"\t" <<"2角硬币个数" <<"\t" <<"5角硬币个数" <<endl;
cout <<" " <<k <<"\t" <<" " <<j <<"\t" <<" " <<i <<endl;
}
else
{
p=i*5+j*2;
while(p <=10)
{
cout <<"方法" <<num <<"\t" <<"1角硬币个数" <<"\t" <<"2角硬币个数" <<"\t" <<"5角硬币个数" <<endl;
cout <<" " <<10-p <<"\t" <<j <<"\t" <<i <<endl;
p=i*5+(++j)*2;
num++;
}
}
fac(++i);
return;
}
}
#include <iostream>
#include <stdlib.h>
using namespace std;
//变量定义不要放在递归里面,对递归的终止和递归不利!
int j=0,k=0,num=0;//j代表2角钱个数 //i代表5角钱个数 //k代表1角钱个数
int p;
void fac(int i);
int main(int argc, char *argv[])
{
fac(0);
return 0;
}
void fac(int i)
{
if (i == 2) //你之前的要用判断==而不是赋值=,分析:如果i是2则递归终止
{
num++;
cout <<"方法" <<num <<"\t"
<<"1角硬币个数" <<"\t" <<"2角硬币个数" <<"\t" <<"5角硬币个数" <<endl;
cout <<" "
<<0 <<"\t\t" <<" " <<0 <<"\t\t" <<" " <<i <<endl;
}
if(i <2) //如果小于2,才考虑递归的做法
{
p=i*5 + j*2;
while(p <=10) //这里死循环了!
{
num++;
cout <<"方法" <<num <<"\t"
<<"1角硬币个数" <<"\t" <<"2角硬币个数" <<"\t" <<"5角硬币个数" <<endl;
cout <<" " <<10-p <<"\t\t" <<j <<"\t\t" <<i <<endl;
j++;
p=i*5+j*2;
}
return fac(++i);
}
}
#include "iostream"
#include "vector"
using namespace std;
void fac(int sum = 0, vector<int> cur = vector<int>()) {
if (sum == 10) {
cout<<"1元 = ";
for (size_t i = 0; i < cur.size(); ++i) {
cout<<cur[i]<<"角 "<<(i == cur.size() - 1 ? "" : "+ ");
}
cout<<endl;
return;
}
if (sum < 10) {
vector<int> t;
switch(cur.empty() ? 5 : cur.back()) {
case 5 :
t= cur;
t.push_back(5);
fac(sum + 5, t);
case 2 :
t = cur;
t.push_back(2);
fac(sum + 2, t);
case 1 :
t = cur;
t.push_back(1);
fac(sum + 1, t);
}
}
}
int main() {
fac();
return 0;
}
------------
运行:
1元 = 5角 + 5角
1元 = 5角 + 2角 + 2角 + 1角
1元 = 5角 + 2角 + 1角 + 1角 + 1角
1元 = 5角 + 1角 + 1角 + 1角 + 1角 + 1角
1元 = 2角 + 2角 + 2角 + 2角 + 2角
1元 = 2角 + 2角 + 2角 + 2角 + 1角 + 1角
1元 = 2角 + 2角 + 2角 + 1角 + 1角 + 1角 + 1角
1元 = 2角 + 2角 + 1角 + 1角 + 1角 + 1角 + 1角 + 1角
1元 = 2角 + 1角 + 1角 + 1角 + 1角 + 1角 + 1角 + 1角 + 1角
1元 = 1角 + 1角 + 1角 + 1角 + 1角 + 1角 + 1角 + 1角 + 1角 + 1角