C++一道简单算法题,题解一些地方看不太懂,求大佬解答,谢谢!

绿线不太能理解,它那个Min(i,j),i*j,怎么得出来的?它说很显然可得出,可我还是不太懂(我太菜了。。。)希望大佬们详细解答下,最好画个图?Thanks♪(・ω・)ノ!

感觉这个是规律

长方形的规律会把原先的正方形也计算进去,所以才会-正方形计算和

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-11-23

具体分析见图片:

本回答被提问者采纳
第2个回答  2021-11-17
比如(2, 4)这个格(行、列元素均以1起始,自己画个图吧),它将作为所求图形的右下角。如果是求正方形,显然长、宽要相等,那么它的边长只有2种可能:1和2。也就是说以这个格为右下角的正方形只有2个,这是不是Min(i, j)?
又如求长方形,这个不好求,所以答案转为求矩形(即它也包含正方形的情形),大不了最后再减去不符合要求的正方形。如(2, 4)格,那么,长宽就有1*1,1*2,1*3,1*4,2*1,2*2,2*3,2*4这8种可能,当然就是i*j 了。
解法最难得的是找到了不重复枚举的判定方式,很厉害。如果是自己想,十之八九是做不出来的,哈哈
第3个回答  2021-11-18
比如(2, 4)这个格(行、列元素均以1起始,自己画个图吧),它将作为所求图形的右下角。如果是求正方形,显然长、宽要相等,那么它的边长只有2种可能:1和2。也就是说以这个格为右下角的正方形只有2个,这是不是Min(i, j)?
又如求长方形,这个不好求,所以答案转为求矩形(即它也包含正方形的情形),大不了最后再减去不符合要求的正方形。如(2, 4)格,那么,长宽就有1*1,1*2,1*3,1*4,2*1,2*2,2*3,2*4这8种可能,当然就是i*j 了。
解法最难得的是找到了不重复枚举的判定方式,很厉害。如果是自己想,十之八九是做不出来的,哈哈
相似回答