大家来看看我这个真的好奇怪哦 真的!
  • 板块P2089 烤鸡
  • 楼主laocaitou
  • 当前回复6
  • 已保存回复6
  • 发布时间2021/5/18 22:45
  • 上次更新2023/11/4 23:05:23
查看原帖
大家来看看我这个真的好奇怪哦 真的!
453308
laocaitou楼主2021/5/18 22:45

我也不知道该说什么,我也不清楚为什么我这个计算的fun方法我得调用三次 本来想法是第一个fun计算得出sum总数,然后根据总数来决定是否在调用第二次fun来输出结果,但是不知道为何使用flag来判断是否输出就会出现这么奇怪的结果 结果就是在第二个fun里面一切正常,迫不得已只能是使用了三次的fun ,真的好奇怪的有无大佬来解释解释为什么第一个fun会发生逻辑上的错误


#include <iostream>
using namespace std;

int s[11];
int sum = 0;
int tempsum = 0;
int n;

void fun(int t, int start, int temp,int flag) {
	if (t > 10) {
		if (temp == n) {
			sum++;
			if (flag == 1) {
				tempsum++;
			}
			if (flag == 2) {	
				for (size_t i = 1; i <= 10; i++)
				{
					cout << s[i] << " ";
				}cout << endl;
			}
			
		}
		else {
			return;
		}
	}

	for (size_t i = 1; i <= 3; i++)
	{
		if (temp <= n) {
			s[t] = i;
			fun(t + 1, i, temp + i,flag);
			//s[t] = -1;
		}
		else {
			return;
		}
	}
}


int main()
{

	cin >> n;

	fun(1, 1, 0, 0);//这里不知道怎么就是需要这么一个,没了反而不行

	if (sum != 0) {
		fun(1, 1, 0, 1);//计算总数
		cout << tempsum << endl;
		fun(1, 1, 0, 2);//输出
	}
	else {
		cout << sum;
	}
	
	return 0;
}

2021/5/18 22:45
加载中...