亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

算法題sticks交上去總是答案錯誤50%是什么原因?

算法題sticks交上去總是答案錯誤50%是什么原因?

qq_我是誰_45 2018-06-10 11:40:40
基本思想使剪枝和dfs我的代碼:#include <iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace std;int visit[70] = { 0 }, sticks[70];int sum=0,n=0,len;bool compare(int a, int b){?? ?return a>b;}int main(){?? ?bool dfs(int start,int snowlen,int nowlen);?? ?while (cin >> n)?? ?{?? ??? ?if (n == 0)?? ??? ??? ?break;?? ??? ?for (int i = 0; i < n; i++)?? ??? ?{?? ??? ??? ?cin >> sticks[i];?? ??? ??? ?sum += sticks[i];?? ??? ?}?? ??? ?sort(sticks, sticks + n, compare);?? ??? ?for (len = sticks[0]; len <= sum; len++)?? ??? ?{?? ??? ??? ?if (sum%len == 0)?? ??? ??? ?{?? ??? ??? ??? ?if (dfs(0, 0, 0))?? ??? ??? ??? ?{?? ??? ??? ??? ??? ?cout << len << endl;?? ??? ??? ??? ??? ?break;?? ??? ??? ??? ?}?? ??? ??? ?}?? ??? ??? ?memset(visit, 0, sizeof(visit));?? ??? ?}?? ??? ?memset(sticks, 0, sizeof(sticks));?? ??? ?sum = 0;?? ?}?? ?return 0;}bool dfs(int start,int snowlen, int nslen){?? ?for (int i = start; i < n; i++)?? ?{?? ??? ?if (snowlen + sticks[i] <= len && visit[i] == 0)?? ??? ?{?? ??? ??? ?visit[i] = 1;?? ??? ??? ?int x,ss;?? ??? ??? ?x = i;?? ??? ??? ?ss = snowlen + sticks[i];?? ??? ??? ?nslen += sticks[i];?? ??? ??? ?if (snowlen + sticks[i] == len)?? ??? ??? ?{?? ??? ??? ??? ?x = 0;?? ??? ??? ??? ?ss = 0;?? ??? ??? ?}?? ??? ??? ?if (nslen == sum)?? ??? ??? ??? ?return true;?? ??? ??? ?if (dfs(x, ss, nslen) == true)?? ??? ??? ?{?? ??? ??? ??? ?return true;?? ??? ??? ?}?? ??? ??? ?visit[i] = 0;?? ??? ??? ?if (snowlen + sticks[i] == len || snowlen == 0)?? ??? ??? ??? ?return false;?? ??? ??? ?while (sticks[i + 1] == sticks[i])?? ??? ??? ??? ?++i;?? ??? ?}?? ?}?? ?return false;}
查看完整描述

目前暫無任何回答

  • 0 回答
  • 0 關注
  • 1422 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號