#include <bits/stdc++.h>
using namespace std;
string str;//定义字符串变量str,用于存储结果
int n, cnt;
void qy(int arr[], int cur, int sum)
{
if (cur == 10)
{
if (sum == n)
{
++cnt;
for (int i = 0; i < cur; ++i)
str += to_string(arr[i]) + ' ';
//to_string 函数:将数字常量转换为字符串,返回值为转换完毕的字符串
str += '\n';
}
}
else
{
for (int i = 1; i <= 3; ++i)//每种配料放1-3克
{
arr[cur] = i;
qy(arr, cur + 1, sum + i);
}
}
}
int main(void)
{
cin >> n;
int arr[10];
str.clear();//运用clear()函数清空字符串变量str
cnt = 0;
qy(arr, 0, 0);
cout << cnt << endl;
cout << str;
return 0;
}
to_string 函数:头文件:#include<string> strings=to_string(i); 将整数i转换为字符串表示形式
使用示例:string to string (int val);
string to string (long long val);
string to string (double val);
vector.clear() :不会将元素设为零,而是将size置为0,保留原有的capacity。
这意味着vector仍占用原有内存,若要彻底清零,需重新定义vector或使用assign函数。
string的clear():调用clear()的结果是,将空间的首字符设置为’\0’,而并不是删除了数据成员的内容
string:
①string str 生成空字符串
②string s(str) 生成字符串为str的复制品
③string s(str,strbegin,strlen) 将字符串str中,从下标strbegin开始、长度为strlen的部分作为字符串初值
④string s(cstr,char_len) 以c_string类型cstr的前char len个字符串作为字符串s的初值
⑤strings(n,c) 生成n个c字符的字符串
⑥string s(str,stridx) 将字符串str中从下标stridx开始到字符串结束的位置作为字符串初值