題意:將乙個數字分成不超過50個回文數字,只要不超過50個就行,不一定要最小。
思路:一道算是比較簡單的題被我越搞越複雜。從中間開始向兩邊遍歷並逐位賦值給b,找到不對稱的地方時取較小的數,每次找到的b都是小於a的較大回文數字。如a = 123345,則第乙個回文數字b = 123321; a = 12223 , b = 12221,;a = 32221,b = 12221,具體見注釋吧。
#includeusing namespace std;
const int n = 1010;
char a[n],b[n],c[n],ans[n][n];
int main()
else
b[i] = b[len - 1 - i] = a[i];
}b[len] = 0;
//特判
if(!flag)//a已經是回文串
if(b[0] == '0')//特判
else//分成9+199..991,8 + 299..992,7 + 399..993等
if((len & 1) && (a[len >> 1] != '0'))//奇數字中間位置可能不為0,需要再次計算
break;
}// 獲取c,c = a - b
int t4 = 0;
for(int i = len - 1; i >= 0; i--)
c[len] = 0;
//清除c的前導零
int t5;
for(int i = 0; i < len; i++)
}strcpy(ans[num++],b);
strcpy(a,c + t5);//將c賦值給a繼續下一次迴圈
len = strlen(a);
}printf("case #%d:\n",cas++);
printf("%d\n",num);
for(int i = 0; i < num; i++)
printf("%s\n",ans[i]);
}return 0;
}
915 字串 貪心 模擬
時間限制 1000 ms 記憶體限制 65535 kb 難度 1 描述 shiva得到了兩個只有加號和減號的字串,字串長度相同。shiva一次可以把乙個加號和它相鄰的減號交換。他想知道最少需要多少次操作才能把第乙個字串變換成第二個字串。你現在要去幫助他完成那個這個問題。輸入多組測試資料 每組資料有兩...
2014 09 3 字串匹配(模擬,字串處理)
給出乙個字串和多行文字,在這些文字中找到字串出現的那些行。你的程式還需支援大小寫敏感選項 當選項開啟時,表示同乙個字母的大寫和小寫看作不同的字元 當選項關閉時,表示同乙個字母的大寫和小寫看作相同的字元。輸入格式 輸入的第一行包含乙個字串 s,由大小寫英文本母組成。第二行包含乙個數字,表示大小寫敏感的...
hdu2920 字串雜湊
模式串中 把它分成一截截,當某一截在s串中多個位置能找到匹配,找第乙個匹配點,貪心 因為當中間有 可以利用它跳過一些字元,當遇到 先跳過乙個字元,其他的一截截貪心去找到匹配位置,若最後剩餘偶數個字元,則match 第一截和最後一截如果是非 和 必須嚴格匹配 找來的雜湊寫法 include inclu...