日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

usaco ★Zero Sum 和为零

發(fā)布時(shí)間:2023/11/27 生活经验 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 usaco ★Zero Sum 和为零 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
★Zero Sum 和為零
請(qǐng)考慮一個(gè)由 1 到 N(N=3, 4, 5 ... 9)的數(shù)字組成的遞增數(shù)列:1 2 3 ... N.
現(xiàn)在請(qǐng)?jiān)跀?shù)列中插入“+”表示加,或者“-”表示減,抑或是“ ”表示空白,來(lái)將每一對(duì)數(shù)字組合
在一起(請(qǐng)不在第一個(gè)數(shù)字前插入符號(hào)).
計(jì)算該表達(dá)式的結(jié)果并注意你是否得到了和為零.
請(qǐng)你寫一個(gè)程序找出所有產(chǎn)生和為零的長(zhǎng)度為 N 的數(shù)列.
PROGRAM NAME: zerosum
INPUT FORMAT
單獨(dú)的一行表示整數(shù) N (3 <= N <= 9).
SAMPLE INPUT (file zerosum.in)
7
OUTPUT FORMAT
按照 ASCII 碼的順序,輸出所有在每對(duì)數(shù)字間插入“+”, “-”, 或 “ ”后能得到和為零的數(shù)
列.(注意:就算兩個(gè)數(shù)字之間沒(méi)有插入符號(hào)也應(yīng)該保留空格)
SAMPLE OUTPUT (file zerosum.out)
1+2-3+4-5-6+7
1+2-3-4+5+6-7
1-2 3+4+5+6+7
1-2 3-4 5+6 7
1-2+3+4-5+6-7

1-2-3-4-5+6+7



這題最難的點(diǎn)就是得到一個(gè)字符序列后判斷他的值是不是0了這一步占了我整個(gè)代碼長(zhǎng)度的3/5,而且花了很長(zhǎng)時(shí)間。總之這題花了很長(zhǎng)時(shí)間==。

而且他要求我按ascll順序,所以wa了一發(fā)。我不知道是什么順序就把switch后面那三個(gè)+ -space 交換了順序跟樣例進(jìn)行比較。

/*
ID:jinbo wu
LANG:C++
TASK:zerosum
*/
#include<bits/stdc++.h>
using namespace std;
int m;
char c[100];
bool num(char b)
{if(b>=48&&b<=57)return true;return false;}
void dfs(int n,int cnt,int l)
{switch(cnt){case 1:{c[l++]=' ';c[l++]=48+n;break;}case 2:{c[l++]='+';c[l++]=48+n;break;}case 3:{c[l++]='-';c[l++]=48+n;}}if(n==m){int sum=0;int flag=0;int k=0;c[l]='\0';for(int i=0;i<l;i++){if(c[i]==' ')continue;if(c[i]=='+'){flag=0;continue;}if(c[i]=='-'){flag=1;continue;}if(k==0){if(num(c[i])&&c[i+1]!=' '){if(flag==0)sum+=(c[i]-'0');if(flag==1)sum-=(c[i]-'0');}else if(num(c[i])&&c[i+1]==' ')k=c[i]-'0';}else{if(num(c[i])&&(c[i+1]!=' '||c[i+1]=='\0')){k=k*10+c[i]-'0';if(flag==0)sum+=k;if(flag==1)sum-=k;k=0;}else if(num(c[i])&&c[i+1]==' '){k=k*10+c[i]-'0';}}}if(sum==0){for(int i=0;i<l;i++)cout<<c[i];cout<<endl;}return;}for(int i=1;i<=3;i++)dfs(n+1,i,l);
}
int main()
{freopen("zerosum.in","r",stdin);freopen("zerosum.out","w",stdout);cin>>m;c[0]='1';for(int i=1;i<=3;i++)dfs(2,i,1);
}


總結(jié)

以上是生活随笔為你收集整理的usaco ★Zero Sum 和为零的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。